我有一些实现接口(interface)的模型,即它们都实现了特定的方法,我们将其称为方法“A”。现在我有一个带有方法“B”的类,它应该调用方法“A”。所以我定义了它,以便它获取接口(interface)作为输入参数,一切都很好。问题是当我将模型(实现接口(interface))提供给方法“B”时,它说类型不同。
我尝试将模型转换为接口(interface),它给了我“不兼容的类型”错误。
这是我所拥有的:
public interface BaseObject<T> {
boolean isEqualTo(T object); //AKA: method "A"
}
public interface BaseList<T extends BaseObject> {
boolean areListsEqual(List<T> firstList, List<T> secondList); //AKA: method "B"
}
public class Helper implements BaseList<BaseObject> {
@Override
public boolean areListsEqual(List<BaseObject> firstList, List<BaseObject> secondList) {
boolean isEqual = true;
...
for (int i = 0; i < firstList.size(); i++) {
isEqual = isEqual && firstList.get(i).isEqualTo(secondList.get(i));
}
return isEqual;
...
}
}
// I have different ones
public class MyModel implements BaseObject<MyModel>{
...
}
这是我收到错误的部分:
List<MyModel> first = new ArrayList<>():
List<MyModel> second = new ArrayList<>():
...
new Helper().areListsEqual(first, second);
// This is another thing I tried
new Helper().areListsEqual((List<BaseObject>) first, (List<BaseObject>) second);
最佳答案
所以我找到了解决方案。我必须转换列表。我将该方法添加到 Helper 类中,并在将其提供给“areListsEqual”方法之前转换每个列表。事情是这样的:
public List<BaseObject> convertList(List inputList){
List<BaseObject> baseList = new ArrayList<>();
if (inputList != null && inputList.size() > 0)
baseList.addAll(inputList);
return baseList;
}
我就是这样调用它的:
Helper helper = new Helper();
helper.areListsEqual(helper.convertList(first), helper.convertList(second));
关于java - 如何使用 "interface"作为输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58500757/