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

时间:2013-04-09 23:07:08

标签: java generics reflection

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

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.Fouad能够猜出导致我的问题的错字。

3 个答案:

答案 0 :(得分:4)

这个怎么样?

theClass.getName();

答案 1 :(得分:0)

您的代码只返回相同的内容。

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

答案 2 :(得分:0)

你可以尝试这样做。

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

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