任何人都可以解释:
class Test<T extends BaseDao>{
void someMethod(){
T inst = new Dao(); // required type T provided Dao
T inst2 = new BaseDao(); // required type T provided BaseDao
}
}
class Dao extends BaseDao{}
我们将T类型作为BaseDao的子类型。为什么不能将Dao或BaseDao类型分配给T类型?
想像
Test<MySpecialDao> specialDao = new Test<>();
现在,对于像这样的电话specialDao.someMethod()
,
void someMethod(){
T inst = new Dao(); // required type T, provided Dao
T inst2 = new BaseDao(); // required type T, provided BaseDao
}
有效地成为
void someMethod(){
MySpecialDao inst = new Dao(); // required type MySpecialDao, provided Dao
MySpecialDao inst2 = new BaseDao(); // required type MySpecialDao, provided BaseDao
}
当然,Dao
和BaseDao
都不是的子类型MySpecialDao
,可能不是超类型。
我会改成
void someMethod(){
Dao inst = new Dao();
BaseDao inst2 = new BaseDao();
}
希望此更改不会破坏您的预期逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句