我有一个接收类型化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能够猜出导致我的问题的错字。
答案 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());
}
该方法不接受使用参数,而是接受表示该类的对象。