泛型为什么实现接口的类与Java中的接口类型不同?
我有
out.load(output, transactions, columnHeaders, dataFormat);
其中load
定义为:
public boolean load(String outputfile, List<Transaction> transactions, List<String> columnHeaders, String dataFormat);
及
String output = "";
String dataFormat = "";
ArrayList<ARTransaction> transactions = new ArrayList<ARTransaction>();
List<String> columnHeaders = null;
在哪里
ARTransaction implements Transaction
为什么transactions
的类型有问题
# 1 楼答案
因为它可能不满足Liskov substitution principle
# 2 楼答案
它很难将
ArrayList<ARTransaction>
的逆变类型转换为List<Transaction>
试试
List<? extends Transaction>
# 3 楼答案
或者只是将事务声明为
List<Transaction>
下面是一个常见的例子,说明为什么你显然无法做到这一点: