【发布时间】:2013-08-22 13:32:17
【问题描述】:
在阅读有关泛型的 Java 官方教程时,我发现您可以限制类型参数(在本例中为 T)以使用 'and' 运算符 (&) 扩展一个类和/或更多接口像这样:
<T extends MyClass & Serializable>
我用, 替换了&(错误地仍然有效,但有一个小警告)。
我的问题是,这两者有什么区别:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
以及示例方法:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
【问题讨论】:
-
@Doorknob 您假设 OP 正在使用键盘并且与您使用的键盘相同。
-
@emory 我认为即使这也是错误的方向 - 错误不在他的手指上,而是在他的大脑中。类似于您尝试在 Java 源文件中使用“包含”而不是“导入”。您输入了错误的“包含”,因为您的大脑告诉您输入错误的内容,这可能有多种原因。
-
@Nicholas Pickering,是对的!对我来说,这不是因为键盘打错了,而是因为大脑。当你写一个类实现的接口时,你用逗号分隔它们。