我对Java泛型不熟悉。我有一个名为RIEngine
的接口。
我正在尝试以下示例:
private <T> boolean allExist(List<T extends RIEngine> resultedList,
String... columnName)
{ ... }
无法编译。
但
private <T> boolean allExist(List<? extends RIEngine> resultedList,
String... columnName)
{ ... }
编译。
我的问题是:为什么会这样。
为什么不能使用type =“ T”代替通配符?
请帮助我理解。
最佳答案
试试这个:
private <T extends RIEngine> boolean allExist(List<T> resultedList, String... columnName){...
您需要将类型界限放在类型声明中,而不是在使用位置。
第二个代码之所以编译是因为它是一个通配符(您可以在不事先声明该方法的类型的情况下使用该通配符)