gpt4 book ai didi

java - 泛型类型作为方法参数

转载 作者:行者123 更新时间:2023-12-02 13:29:11 28 4
gpt4 key购买 nike

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

例如,传入类型String到方法,并在方法体内,执行

List<String> l = new ArrayList<String>();
String s = new String("abc");

我该如何去做呢?

编辑:

How to have Java method return generic list of any type?确实回答了我问题的第一部分。

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

最佳答案

没有任何机制可以仅通过泛型来实现这一点。您必须使用反射来实现这一点。

public <T> T instantiator(Class<T> c){
if (c != null){
try {
return (T) c.getConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

但是,如果不小心使用,反射可能会失败。如果类有一个不带参数的构造函数,我刚刚编写的这个方法可以正常工作。例如,instantiator(String.class);instantiator(Exception.class); 可以正常工作,因为它们有一个空的构造函数,但 instantiator(Integer.class) ) 不会运行。

关于java - 泛型类型作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com