Java 如何从类中检索T的类名<;T>;实例
我有一个方法,它接收类型化类的实例作为参数:Java 如何从类中检索T的类名<;T>;实例,java,generics,reflection,Java,Generics,Reflection,我有一个方法,它接收类型化类的实例作为参数: publicsomemethod(类的类) 我想得到T代表的类的名称 我可以这样得到它: class.newInstance().getClass().getName() 有更好的办法吗 背景:我的方法基于指定的实体类构建通用JPQL查询 编辑: 所讨论的方法实际上如下所示: 公共列表这个怎么样 theClass.getName(); 您的代码只返回相同的内容 theClass.newInstance().getClass().getName()
publicsomemethod(类的类)
我想得到T代表的类的名称
我可以这样得到它:
class.newInstance().getClass().getName()
有更好的办法吗
背景:我的方法基于指定的实体类构建通用JPQL查询
编辑:
所讨论的方法实际上如下所示:
公共列表这个怎么样
theClass.getName();
您的代码只返回相同的内容
theClass.newInstance().getClass().getName()
您有一个类
,可以为其创建一个新实例。然后对它调用getClass()
,它再次返回Class
您只需对原始输入参数使用getName
例如:
public static void main(String[] args) {
printName(String.class);
printName(Integer.class);
}
public static <T> void printName(final Class<T> clazz) {
System.out.println(clazz.getName());
}
你可以试试这样做
public void printName(Object classObject){
System.out.println(classObject.getClass().getName());
}
该方法不使用参数,而是接受表示类的对象 Class.getName()
?返回Class
。。。这是我尝试的第一件事。也许我当时做错了什么。我再试试。不……不,不class.newInstance().getClass()
只是再次返回类的。。。我的代码目前正在使用上述方法。@jahroy重点是Louis'更简单:这是我尝试的第一件事。当我尝试它时,我得到了java.lang.Class
。就像我对路易斯说的,也许我当时做错了什么。我要再试一次。谢谢。@jahroy我打赌你一定是在尝试使用class.getClass().getName()
@EngFouad-Ooh。。。也许那是我的大脑放屁。打得好,你说得对。我一定是出于习惯键入了getClass()
。谢谢
public void printName(Object classObject){
System.out.println(classObject.getClass().getName());
}