Type erasure。あなたは引数としてClass<T>
を渡すことができ、それを使用します。同様に、
T cast(Class<T> cls, Object o) {
return cls.cast(o);
}
またはさえ
public class MyType {
public static <T> T cast(Class<T> cls, Object o) {
return cls.cast(o);
}
}
あなたはまた
int t = MyType.cast(Integer.class, 10);
よう
を呼び出すことができますが、同じ行に、あなたは、コンストラクタでClass
を渡すことができましたlike
public class MyType<T> {
public MyType(Class<T> cls) {
this.cls = cls;
}
private Class<T> cls;
T cast(Object o) {
return cls.cast(o);
}
}
そして、あなたは何をやっている
MyType<Integer> myType = new MyType<>(Integer.class);
int t = myType.cast(10);
のようにそれを使用し、安全なタイプではないので、はい、あなたはそれが安全で入力していないという警告を取得するつもりです。 –