hrs*_*hrs 1 java generics inheritance
以下方法无法编译:
public <K extends Middle> K test(K a, K b) {
return a.test(); //a.test() returns Middle
}
Run Code Online (Sandbox Code Playgroud)
如果我们设置K
为子类型Middle
,那么Middle
应该可以返回,对吧?
如果我执行以下操作:return (K)a.test();
,它编译...
如果我们将K设置为Middle的子类型,那么Middle应该可以返回,对吧?
不,这不安全.以Number
作为一个例子.如果Middle
是Number
,K
是Integer
,a.test()
可以返回Double
as Double extends Number
.但Double
不是Integer
,所以这不是类型安全的.
所有Ks都是Middles,但并不能保证所有的Mids都是Ks.
归档时间: |
|
查看次数: |
54 次 |
最近记录: |