次のようなクラスを作成しましたNameOfTheClass<Raeaeraear>
。どういう意味ですか?そして、なぜ好きなランダムなものを入れることができるのですか?
質問する
132 次
2 に答える
1
それがジェネリックと呼ばれるものです。Generics は、クラスのインスタンスにどのような型で動作するかを「伝える」ために使用されます。
List<People> myPeopleList = new ArrayList<People>();
ここでは、リストがパラメータ化されています。List インターフェイスのソース コードを見ると、このように宣言されています。これは、インターフェイス List がジェネリックであることを意味します。
public interface List<E> extends Collection<E> {
...
あなたの場合、クラス NameOfTheClass は、このように実装されます。 注: ジェネリックは、クラスまたはインターフェイスの両方に適用できます。
public class NameOfTheClass<E> {
....
public doSome(E e){
doSomeGenericOperationWith(e);
}
このクラスは次のように使用できます。
NameOfTheClass<AType> instance = new NameOfTheClass<AType>();
Atype yourType = ...
doSome(yourType);
注: doSome() メソッドを使用するには、Atype 型のパラメーターが必要です。これは、Java コンパイラーによって処理されます。そのため、他の型でメソッドを呼び出そうとすると、コンパイル エラーが発生します。
その他の資料: http://docs.oracle.com/javase/tutorial/java/generics/why.html
于 2012-08-22T19:17:29.080 に答える
0
コンパイラを使用すると<>
、コンパイラはジェネリック型のチェックをオフにします。コンパイラがタイプを知る必要がある場合、使用することはできません<>
例えば
// compiles ok because the compiler knows not to check the type.
List<Integer> ints = new ArrayList<>();
// compiler needs to know the type, so this doesn't compile.
List<Integer> ints = new ArrayList<>() {};
于 2012-08-22T19:14:07.707 に答える