我有一个类似于
的方法签名public void (Foo<T> foo)
在这个方法中,我需要调用一个带
的方法 Class<T> clazz
作为一个论点。如何从foo获得Class<T>
类型的引用?感谢
答案 0 :(得分:3)
由于类型擦除,您无法直接获取类型参数。信息在运行时根本不存在。需要引用类型参数类的API需要获取类对象实例...
public void abc(Foo&lt; T&gt; foo,Class&lt; T&gt; clazz)
答案 1 :(得分:0)
您确定您的方法签名是否正确?
我认为没有T级你就不能让论证看起来像
public void method(Class<T> obj){
}
必须存在参数类型,因此您已经知道传入的类型 当你把它改成这个:
public <T> void method(T u){
System.out.println("U: " + u.getClass().getName());
}
你应该能够获得课程名称或仅仅是课堂参考,不是吗?
文档:
http://download.oracle.com/javase/tutorial/java/generics/genmethods.html