我有两个这样的构造函数设置:

public XMessage(Information info, List<Object> results) {
    this.information = info;
    this.results = results;
}

public XMessage(Information info, Object result) {
    this(info, Collections.singletonList(result));
}

我通过传入一个Information对象和一个ArrayList对象来创建XMessage对象。当我检查结果时,它是包装ArrayList项目的单例列表。 Java为什么不使用更合适的构造函数?我有哪些强制选择的选择?

最佳答案

调用第一个构造函数:

new XMessage(information, new ArrayList<Object>());

调用第二个构造函数:
new XMessage(information, new ArrayList<String>());
ArrayList<String>()不会被视为List<Object>。考虑使用以下构造函数:
public XMessage(Information info, List<? extends Object> results)

正如@LuiggiMendoza在下面建议的那样。

关于java - Java为什么在重载的构造方法中无法识别我的ArrayList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10643846/

10-10 03:07