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());
}