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()可以返回Doubleas Double extends Number.但Double不是Integer,所以这不是类型安全的.
所有Ks都是Middles,但并不能保证所有的Mids都是Ks.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |