我有两个这样的构造函数设置:
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/