在阅读关于泛型的Java官方教程时,我发现你可以限制类型参数(在本例中是T)用'and'运算符(&)扩展类和/或更多接口,如下所示:
<T extends MyClass & Serializable>
Run Code Online (Sandbox Code Playgroud)
我替换了&with ,(错误地仍然有效,并带有一个小警告).
我的问题是,这两者之间有什么区别:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
Run Code Online (Sandbox Code Playgroud)
和示例方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
ars*_*jii 169
<T extends MyClass & Serializable>
Run Code Online (Sandbox Code Playgroud)
这断言单一类型参数T必须扩展MyClass且必须是Serializable.
<T extends MyClass , Serializable>
Run Code Online (Sandbox Code Playgroud)
这声明了两个类型参数,一个叫T(必须扩展MyClass)和一个叫Serializable(隐藏java.io.Serializable- 这可能是警告的内容).
| 归档时间: |
|
| 查看次数: |
3160 次 |
| 最近记录: |