gpt4 book ai didi

java - java中的通用列表初始化

转载 作者:行者123 更新时间:2023-11-30 03:27:51 25 4
gpt4 key购买 nike

我在初始化 List 时遇到问题。项目的类在编译时是未知的 - 它们可以是 int、float、string 或自定义类。

所以我尝试了这个:

public class Sensordevice {
private List<?> valueList;

public void setValueList(List<?> valueList) {
this.valueList = valueList;
}

public void addValue(Object value) {
if(valueList == null){
valueList = getList(value.getClass());
}
valueList.add(value);
}

private <T> List<T> getList(Class<T> requiredType) {
return new ArrayList<T>();
}
}

但是我在 addValue 方法中的 valueList.add(value) 处收到此错误:

The method add(capture#4-of ?) in the type List is not applicable for the arguments (Object)

<小时/>

更新

非常感谢您的回复。这个解决方案适用于我的。

public class Sensordevice<T> {
private List<T> valueList;

public void setValueList(List<T> valueList) {
this.valueList = valueList;
}

public void addValue(T value) {
if(valueList == null){
valueList = new ArrayList<T>();
}
valueList.add(value);
}
}

最佳答案

这对我有用。我所说的“有效”是指我没有收到任何错误。它似乎没有提供任何功能,因为没有任何方法可以从 Sensordevice 获取对象列表,因为 getList 只是返回一个新的空列表,但是这就是你给的代码。我认为错误的核心是让 addValue 采用 Object 而不是 T

public class Sensordevice {
private List valueList;

public <T> void setValueList(List<T> valueList) {
this.valueList = valueList;
}

public <T> void addValue(T value) {
if(valueList == null){
valueList = getList(value.getClass());
}
valueList.add(value);
}

private <T> List<T> getList(Class<T> requiredType) {
return new ArrayList<>();
}
}

public static void main(String[] args) {
Sensordevice sd = new Sensordevice();
sd.addValue(new Object());
sd.addValue(new Integer(3));
sd.addValue("");
sd.addValue(new Sensordevice());

System.out.println(sd.getList(Sensordevice.class));
}

关于java - java中的通用列表初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29753671/

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