私はジェネリックを実践しており、次のことを行いました。
以下のように man というクラスを作成しました。
public class Man{
int hands=2;
int legs=2;
boolean alive;
public Man(boolean b) {
// TODO Auto-generated constructor stub
alive=b;
}
}
person というクラスを作成しました
public class Person<Man> {
Man p;
String name;
public Person(Man p, String name) {
this.p = p;
this.name = name;
}
public Person() {
// TODO Auto-generated constructor stub
}
}
以下のように string または int 型の person をインスタンス化しようとしましたが、エラーはスローされません。
Person<String> p1 = new Person<String>(new String("test"), "test1");
Person<Integer> p2=new Person<>(1,"test");
よく調べてみると、次の警告が表示されました。「型パラメータ Man は型 Man を隠しています」
したがって、クラス Person に型パラメーターとして Man を与えることは、Java の例で「E」を与えることと同じくらい良いことを理解しています。Man.class ではありません。なぜこれが起こったのですか?Man.class をジェネリック型パラメーターとして割り当てるにはどうすればよいですか?
ジェネリックを学ぶための良い質問/練習問題を私に投げてくれませんか。