Java 将泛型类型T强制转换为类<;T>;
如何将泛型类型Java 将泛型类型T强制转换为类<;T>;,java,class,object,types,casting,Java,Class,Object,Types,Casting,如何将泛型类型T作为Class强制转换到对象中 像Class T.Class或Class T.getClass()之类的东西不起作用,因为T不是变量 函数应如下所示: public Class<T> getType() { return // Class of T } public类getType(){ return//T类 } 背景资料: 我有一些课程Class1,Class2。。。所有这些都扩展了ParentClassParentClass具有函数getType()。 我正
T
作为Class
强制转换到对象中
像Class T.Class
或Class T.getClass()
之类的东西不起作用,因为T
不是变量
函数应如下所示:
public Class<T> getType() {
return // Class of T
}
public类getType(){
return//T类
}
背景资料:
我有一些课程Class1
,Class2
。。。所有这些都扩展了ParentClass
ParentClass
具有函数getType()
。
我正在寻找一种更优雅的方法来获取类型,然后创建一个变量类类型
,并以这种方式保存类型。您可以这样做:
public class Parent<T> {
private final Class<T> clazz;
public Parent(Class<T> clazz) {
this.clazz = clazz;
}
public Class<T> getType() {
return clazz;
}
}
public class Foo<T> extends Parent {
public Foo(Class<T> clazz) {
super(clazz);
}
}
公共类父类{
私人期末班;
公共家长(班级){
this.clazz=clazz;
}
公共类getType(){
回击声;
}
}
公共类Foo扩展父类{
公开课(课堂){
超级(clazz);
}
}
您在运行时不知道t
(因为)
基本上,MyWonderfulClass
在运行时将变成MyWonderfulClass
,因此您没有任何机会检索它,除非您在构造函数或setter中直接提供该类:
//class is a reserved keyword so I call it clazz instead.
public MyClass(Class<T> clazz) {
this.clazz = clazz;
}
public Class<T> getType() {
return this.clazz;
}
//class是一个保留关键字,所以我称它为clazz。
公共课堂(课堂){
this.clazz=clazz;
}
公共类getType(){
返回此.clazz;
}
您还可以强制子类实现
getType():Class
您可以显示代码吗。你想在哪里做,为什么?欢迎来到可怕的类型擦除世界。那通常是不可能的。谢谢。我知道,只是有兴趣,如果有一个优雅的方式做这件事(见背景信息)。不管怎样,谢谢你的解释!