私はJavaのジェネリックを学んでいますが、ジェネリックパラメーターから受け取った型をインスタンス化する際に問題が発生しました(ただし、これはC#で可能です)
class Person {
public static <T> T say() {
return new T; // this has error
}
}
私はこれを試しました:Javaのジェネリック - Tのインスタンス化
public static <T> T say(Class<?> t) {
return t.newInstance();
}
エラー:
incompatible types
found : capture#426 of ?
required: T
それはうまくいきません。以下は問題ないように見えますが、一部のクラスのインスタンス化が必要であり、静的メソッドでは使用できません: Java でのジェネリック型のインスタンス化
public class Abc<T>
{
public T getInstanceOfT(Class<T> aClass)
{
return aClass.newInstance();
}
}
これはJava 関係者が言っている型消去ですか? これは型消去の制限ですか?
この問題の回避策は何ですか?