![](/img/trans.png)
[英]Java Generic Type non-static method return Object instead of generic type T
[英]How to return a generic type object in a static method
我有2节课:
public class Super {
public static <T> T bar(Class<T> clazz){
try {
return (T)(clazz.newInstance());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
return null;
}
}
和
public class Sub extends Super{
public static void main(String[] args){
Sub s = Sub.bar(Sub.class);
}
}
现在我不想将Class<T> clazz
用作bar
的参数,所以我如何返回通用类型T
,谢谢。
你不能 泛型仅在编译时提供,在运行时不可用。 因此,你必须提供Class clazz
,以了解在运行时的吨。
提供Class实例来创建新对象没有错。
如果您的代码需要创建对象或通常在某个Class上进行操作,则应传递实例。 此操作与其他对象用法没有区别。 泛型应该使事情变得更容易并确保类型安全。 因此,在这种情况下,只能通过限制静态参数(通过对通用参数设置一些限制)来创建对女巫类的限制。
顺便说一句。
你应该叫从那里来实现的,而不是如此类的静态方法Sub.bar(Sub.class)
你应该有Super.bar(Sub.class)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.