-2

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

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

4

3 回答 3

4

那这个呢?

theClass.getName();
于 2013-04-09T23:08:59.517 回答
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
于 2013-04-09T23:12:11.793 回答
0

你可以尝试这样做。

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

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

于 2013-04-09T23:32:10.200 回答