如何从arg中提取Generic类型

时间:2011-01-05 01:17:39

标签: java generics

我有一个类似于

的方法签名
public void (Foo<T> foo)

在这个方法中,我需要调用一个带

的方法

Class<T> clazz

作为一个论点。如何从foo获得Class<T>类型的引用?感谢

2 个答案:

答案 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