如何使用反射来执行通用构造函数

时间:2019-02-13 10:24:36

标签: java generics reflection

例如,假设我有String type = "Integer",而另一边有一个public class MyType<T>和一个构造函数public MyType(){} 我如何使用java反射newInstance方法以便能够执行以下操作:

public static MyType<?> create(String type){

    return /*new MyType<Integer>() if type was "Integer", etc*/;

}

1 个答案:

答案 0 :(得分:1)

您不需要“ String type”参数,只需使用以下代码即可:

public static void main(final String[] args)
{
    final MyType<Integer> myType1 = create();
    myType1.v = 1;
    final MyType<String> myType2 = create();
    myType2.v = "1";
    System.out.print(myType1);
    System.out.print(myType2);
}

public static class MyType<T>
{
    T v;
}

public static <K> MyType<K> create()
{
    return new MyType<>();
}