java中如何通过反射调用自定义泛型方法?
class Person
{
public <T> void print(T t)
{
System.out.println(t.toString());
}
}
最佳答案
泛型在编译时被删除,它们仅向编译器提供额外信息以确定错误。它们实际上并没有更改 .class
中方法的签名。文件。
这意味着在 Java 中通过反射调用泛型方法与在 Java 中调用非泛型方法的方式完全相同,除了指定类型为 T
之外。 ,您将指定 Object
的类型.
关于如何通过反射调用常规方法的教程太多了,我犹豫再添加一个;但是,如果您确实需要有关如何通过反射调用方法的指导,请在下面添加评论,我将添加必要的代码。
如果您发现事情没有按预期工作,您可以随时运行 javap
在编译的类文件上验证您是否在参数列表中使用了正确的对象。如果您指定 <T extends List>
类型通用签名,生成的参数对象实际上可能是 List
对象。
关于java - 在java中通过反射调用通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739248/