[英]Any way to get around type erasure in Java?
我想知道 SO 上的 Java 大神是否有任何技巧可以分享如何进行以下工作
public class MyClass<T> {
public List<T> getMyList(Class1 a, String, b) {
Generic1<Generic2<T>, Class1> x = new Generic3<T>();
x.doSomething();
// this compiles but x doesn't work correctly since (of course) T is now type "Object"
}
}
//... calling it like this:
MyClass<MyType> c = new MyClass<>();
为了让上面的对象“x”完成它的工作,它需要知道 T 的类型是什么。 Generic1、Generic2 和 Generic3 不是我写的类。 但是有什么方法可以传达类型信息以便它们起作用吗? 比如说,如果我在运行时传入类型的 Class?
谢谢。
.newInstance()
Class<T>
对象并使用.newInstance()
而不是new
。
public class MyClass<T> {
private final Class<T> clazz;
public MyClass(final Class<T> clazz)
{ this.clazz = clazz; }
public List<T> getMyList(Class1 a, String, b) {
Generic1<Generic2<T>, Class1> x = this.clazz.newInstance();
x.doSomething();
}
}
//... calling it like this:
MyClass<MyType> c = new MyClass<>(MyType.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.