此代码编译:
import java.io.Serializable;
import java.util.Arrays;
class Test<T extends Arrays & Serializable> { }
Run Code Online (Sandbox Code Playgroud)
但如果我用最后一行替换
class Test<T extends Serializable & Arrays> { }
Run Code Online (Sandbox Code Playgroud)
我得到"预期界面".为什么?
Jon*_*eet 13
声明为类型参数的每个类型变量都有一个绑定.如果没有为类型变量声明绑定,则假定为Object.如果声明了绑定,则它包含:
单个类型变量T,或
类或接口类型T可能后跟接口类型I1&...&In.
如果I1 ... In类型中的任何一个是类类型或类型变量,那么这是一个编译时错误.
所以基本上,如果你的边界包含一个类,它必须是第一个绑定.
(鉴于Arrays无法实例化,不清楚为什么你会想要一个包含它的界限,请注意......这只是一个例子吗?)
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |