7

私が次のものを持っているとしましょう:

List<Apple> myList = new ArrayList<Apple>();

そして、私が呼び出したい場合、Javaは、他のタイプではなく、タイプを持つmyList.add(myApple)ことを期待します(もちろんサブクラスを除く)。しかし、オブジェクト()が必要で、メソッドのオーバーロードなしで内部で宣言されたタイプに応じて異なるメソッドシグネチャを使用したい場合はどうなりますか。そのようです:myAppleAppleBlender<>

Blender<Apple> Tool = new Blender<Apple>();
Tool.blendIt(new Apple()); //expects to have only apples in here

Blender<Banana> OtherTool = new Blender<Banana>();
OtherTool.blendIt(new Banana()); //only Banana's are permitted

出来ますか?

4

3 に答える 3

11

ジェネリッククラスを探しています。

class Blender<T>{
T t;
public void blendIt(T arg){
//stuff
}
}

class Test {
   public void method() {
     Blender<Apple> blendedApple = new Blender<Apple>();
     blendedApple.blendIt(new Apple()); 
     Blender<Bannana> blendedBannana = new Blender<Bannana>();     
     blendedBannana.blendIt(new Bannana());
   }
 }
于 2013-02-15T18:59:42.120 に答える
2

はい、そうです:

public class Blender<T> {
   public void blendIt(T arg) { ... }
}
于 2013-02-15T19:00:32.330 に答える
1

Javaでは、ジェネリックはCollections専用ではありません。これは一般的な概念であり、クラス、メソッドなどに適用されます。ジェネリッククラスを作成できます。

于 2013-02-15T19:07:26.797 に答える