我对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){...


您需要将类型界限放在类型声明中,而不是在使用位置。

第二个代码之所以编译是因为它是一个通配符(您可以在不事先声明该方法的类型的情况下使用该通配符)

10-07 12:54