は、このコードを考えてみましょう:はJavaのジェネリックメソッド質問
public <T> List<T> meth(List<?> type)
{
System.out.println(type); // 1
return new ArrayList<String>(); // 2
}
それはそのリストが必要になると言って、2行目でコンパイルされません。今
、変わったの場合:それはコンパイルん
public <T> List<?> meth(List<T> type)
{
System.out.println(type); // 1
return new ArrayList<String>(); // 2
}
。どうして?ワイルドカードを使用する場合、Tにジェネリック型を宣言してワイルドカードを使用することの違いは、ワイルドカードを使用すると、コレクションに新しい要素を追加できないということでした。 <?>
は、リストのサブタイプを返すことができるのはなぜですか?私はここに何かが欠けている、明白なルールとそれがどのように適用されているのですか?
元の目標は何ですか?あなたの方法で何を達成したいですか? – akarnokd
何も実際には、これはプロジェクトの一部ではない、私はちょうどJavaの一般的なメソッドを理解したい。私はこれを今読んでいるhttp://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf – andandandand