gpt4 book ai didi

Java泛型在基类中初始化子类

转载 作者:行者123 更新时间:2023-12-02 01:49:55 25 4
gpt4 key购买 nike

我对 java 很陌生,不太确定如何从“基”类初始化泛型类型/子类。
本质上,我有一堆扩展抽象类 BaseClass 的类,如果不存在键,则需要初始化这些类并将其添加到 instance 映射中。
子类会被多次重用,但会根据 key 参数动态创建。

我想避免反射,并且不介意更改模板(如果它不是“Java 方式”)。
我目前拥有的:

public abstract class BaseClass<T> {
protected Map<String, T> instance = new HashMap<String, T>();

public T Get(String key) {
if (this.instance.containsKey(key)) {
return this.instance.get(key);
}
T item = new T(key); // Obviously this line errors but you get the idea
instance.put(key, item);
return item;
}
}

// Example top class which extends my base class
public class TopClass extends BaseClass<TopClass> {
public TopClass(String key) {
// Do unique initialization stuff
}
}

最佳答案

由于泛型类型会在运行时被删除,因此您无法执行此操作。您可以改为使用类变量,如下所示:

public T Get(Class<T> clazz, String key) throws Exception {
if (this.instance.containsKey(key)) {
return this.instance.get(key);
}
T item = clazz.getDeclaredConstructor(String.class).newInstance(key);
instance.put(key, item);
return item;
}

关于Java泛型在基类中初始化子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53128410/

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