-1

次のようなクラスを作成しましたNameOfTheClass<Raeaeraear>。どういう意味ですか?そして、なぜ好きなランダムなものを入れることができるのですか?

4

2 に答える 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 に答える