Java 泛型类型作为方法参数

Java 泛型类型作为方法参数,java,generics,Java,Generics,我想创建一个方法,它可以接受一个对象类型作为参数,然后我可以用它来实例化另一个对象 例如,将typeString传递给方法,并在方法体中执行 List<String> l = new ArrayList<String>(); String s = new String("abc"); listl=newarraylist(); 字符串s=新字符串(“abc”); 我该怎么做呢 编辑: 回答了我问题的第一部分 作为后续工作,我是否可以在方法体中创建传入类型的实例,如上面

我想创建一个方法,它可以接受一个对象类型作为参数,然后我可以用它来实例化另一个对象

例如,将type
String
传递给方法,并在方法体中执行

List<String> l = new ArrayList<String>();
String s = new String("abc");
listl=newarraylist();
字符串s=新字符串(“abc”);
我该怎么做呢

编辑:

回答了我问题的第一部分


作为后续工作,我是否可以在方法体中创建传入类型的实例,如上面代码段中的第二行所示?

没有任何机制可以仅通过泛型实现这一点。你必须使用反射才能得到它

public <T> T instantiator(Class<T> c){
    if (c != null){
        try {
            return (T) c.getConstructor().newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return null;
}
公共T实例化器(c类){
如果(c!=null){
试一试{
返回(T)c.getConstructor().newInstance();
}捕获(例外e){
e、 printStackTrace();
}
}
返回null;
}

但是,如果不小心使用,反射可能会失败。如果类有一个没有参数的构造函数,那么我刚刚编写的这个方法就可以很好地工作。例如,
实例化器(String.class)
实例化器(Exception.class)可以正常工作,因为有一个空的构造函数,但是实例化器(Integer.class)
不会运行。

有很多关于Java中泛型的教程。。。您至少试过其中一种吗?我已经阅读了一些教程,它们帮助我实现了使用泛型的代码。不幸的是,我无法解决这个特殊的问题。如果可能的话,我们非常感谢你的联系,如果您学习了泛型,您必须首先了解的一件事是,您不能使用泛型类型调用
new
,因为泛型类型在运行时不存在。@Real怀疑论者这里无论如何都不需要这样做,这对于所使用的ArrayList来说也不是问题。@Real怀疑论者胡说八道。您知道编译时传递的类型,可以将其用于列表中。上面@Tom链接的SO问题回答了我问题的第一部分,这回答了第二部分。