Java在编译类型参数中创建具有未知类型的泛型类型的对象

use*_*400 5 java generics reflection introspection

我有通用类:

class Field<T> { }
Run Code Online (Sandbox Code Playgroud)

还有一些其他类(我只在运行时知道它的类型)有很多get方法,例如:

   class A{
      public Date getDate();
      public String getName();
      public Integer getNumber();
   }
Run Code Online (Sandbox Code Playgroud)

我想Field为所有get方法创建类的实例,使用Tequals返回这些get方法的类型.在这个例子中Field<Date>,Field<String>,Field<Integer>.

有人可以帮忙吗?

ktm*_*124 2

您通常将反射用于仅在运行时才知道的事情。泛型信息在编译时被删除。因此,虽然在某些情况下可以将两者混合使用,但并不常见。

我想为所有 get 方法创建 Field 类的实例,其中 T 等于这些 get 方法的返回类型。对于此示例,字段、字段、字段。

从字面上回答你的问题:

Field<Date> dateField = new Field<Date>();
Field<String> nameField = new Field<String>();
Field<Integer> numberField = new Field<Integer>();
Run Code Online (Sandbox Code Playgroud)