2

我对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" 而不是通配符?

请帮我理解。

4

1 回答 1

9

尝试这个:

private <T extends RIEngine> boolean allExist(List<T> resultedList, String... columnName){...

您需要将类型边界放在类型声明中,而不是在使用它的地方。

第二个编译的原因是因为它是一个通配符(您可以使用它而无需事先声明为该方法的类型)

于 2012-05-23T14:07:17.937 回答