如何从类实例中检索 T 的类名<T>



我有一个方法,它接收一个类型化类的实例作为参数:

public <T> someMethod(Class<T> theClass)

我想知道T所代表的类的名称。

我可以这样写:

theClass.newInstance().getClass().getName()

有更好的方法吗?

背景:我的方法基于指定的实体类构建一个通用的JPQL查询。

编辑:

所讨论的方法实际上是这样的:

public <K> List<? extends SomeInterface<K>> someMethod(Class<? extends SomeInterface<K>> theClass, K thePk)

…和Eng。

这个怎么样?

theClass.getName();

你的代码只是返回相同的东西。

theClass.newInstance().getClass().getName()

您有一个Class<T>,您要为它创建一个新实例。然后在它上面调用getClass(),它再次返回Class<T>

您可以在原始输入参数上使用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());
}
输出:

java.lang.String
java.lang.Integer

你可以试试这样做。

public void printName(Object classObject){
    System.out.println(classObject.getClass().getName());
}

方法不使用参数,而是接受表示类的对象。

相关内容

  • 没有找到相关文章

最新更新