Rit*_*ose 4 java generics inheritance types
我有
out.load(output, transactions, columnHeaders, dataFormat);
Run Code Online (Sandbox Code Playgroud)
在哪里load定义为:
public boolean load(String outputfile, List<Transaction> transactions, List<String> columnHeaders, String dataFormat);
Run Code Online (Sandbox Code Playgroud)
和
String output = "";
String dataFormat = "";
ArrayList<ARTransaction> transactions = new ArrayList<ARTransaction>();
List<String> columnHeaders = null;
Run Code Online (Sandbox Code Playgroud)
哪里
ARTransaction implements Transaction
Run Code Online (Sandbox Code Playgroud)
为什么类型有问题transactions?
Mar*_*ers 12
public boolean load(String outputfile, List<? extends Transaction> transactions, List<String> columnHeaders, String dataFormat);
Run Code Online (Sandbox Code Playgroud)
或者只是将交易声明为List<Transaction>.
以下是为什么你显然不能这样做的常见例子:
List<String> list = new ArrayList<String>();
List<Object> objList = list; //if this were possible
objList.add(Integer.valueOf(5));
String val = list.get(0); //ClassCastException here
System.out.println(val);
Run Code Online (Sandbox Code Playgroud)