我有一个方法,它接收一个类型化类的实例作为参数:
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());
}
方法不使用参数,而是接受表示类的对象。