java - 在java中通过反射调用通用方法

标签 java generics reflection

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/

相关文章:

java - 缓冲图像对象的透明度

java - 创建循环通用引用

C# 将 reflection.propertyinfo 转换为 Generic.List<>

C# : Is there a generic way to forward a method call to another object (with the same interface)?

java.sql.时间戳 : changing timezone of Timestamp

java - TextureView 不断收到 SIGSEGV 11

java - 如何更有效地对单个字符串调用replaceAll两次

java - 提取具有通用返回类型的表达式后类型不匹配

c# - 非泛型类中的泛型方法?

c# - 如何显示asp.net缓存的内容?