有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型为什么实现接口的类与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的类型有问题


共 (3) 个答案

  1. # 2 楼答案

    它很难将ArrayList<ARTransaction>的逆变类型转换为List<Transaction>

    试试List<? extends Transaction>

  2. # 3 楼答案

    public boolean load(String outputfile, List<? extends Transaction> transactions, List<String> columnHeaders, String dataFormat);
    

    或者只是将事务声明为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);