如何通过反射在Java中调用自定义泛型方法?
class Person
{
public <T> void print(T t)
{
System.out.println(t.toString());
}
}
泛型在编译时被擦除,它们仅向编译器提供额外的信息来确定错误。它们实际上并不更改.class
文件中方法的签名。
这意味着您在Java中通过反射调用泛型方法的方式与在Java中调用非泛型方法的方式完全相同,不同之处在于,不是指定类型的而是T
指定类型的Object
。
关于如何通过反射调用常规方法的教程太多了,我犹豫要添加另一个方法。但是,如果您确实需要有关如何通过反射调用方法的指导,请在下面添加注释,我将添加必要的代码。
如果发现事情没有按预期进行,则可以始终javap
在已编译的类文件上运行,以验证您在参数列表中使用的对象正确。如果您指定<T extends List>
类型通用签名,则结果参数对象可能实际上是一个List
对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句