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

型境界は、使用されている場所ではなく、型宣言に配置する必要があります。

2番目がコンパイルされる理由は、それがワイルドカードであるためです(メソッドの型として事前に宣言せずに使用できます)

于 2012-05-23T14:07:17.937 に答える