java - 列表的 var 参数作为方法参数

标签 java

我有未知数量的列表(在我的示例中为两个,但可能会有所不同):

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy, MM, dd");
    List<Employee> employees = new ArrayList<Employee>();
    employees.add(new Employee(100, "Abe Adams", sdf
            .parse("2009, 12, 1"), 10000.00));
    employees.add(new Employee(101, "Betty Barnes", sdf
            .parse("2010, 11, 1"), 11000.00));
    employees.add(new Employee(102, "Caleb Crown", sdf
            .parse("2011, 10, 1"), 12000.00));
    employees.add(new Employee(103, "Dirk Daniels", sdf
            .parse("2012, 09, 1"), 13000.00));

    Date date = new Date();
    List<ObjectTest> objects = new ArrayList<ObjectTest>();
    objects.add(new ObjectTest("name",date,10.0));
    objects.add(new ObjectTest("name2",date,20.0));

我想将它们用作方法中的参数

  oReport.writeReportToExcel(employees,objects);

   public <T> void writeReportToExcel(List <T> ... varArrayData  )    {
               ...
   }

我必须使用 var args 参数,但编译器拒绝该代码 需要改变什么?

编译器的消息是

method writeReportToExcel in class Bean2Excel cannot be applied to given types;
required: List<T>[]
found: List<Employee>, List<ObjectTest>
reason: inferred type does not conform to equality constraint(s)
inferred: ObjectTest
equality constraint(s): ObjectTest, Employee
where T is a type-variable:
T extends Object declared in method <T> wirteReportToExcel(List<T> ...)

编辑解决方案(这可能是一种肮脏的方式)

    Bean2Excel oReport = new Bean2Excel();
    List recapList = new ArrayList();
    recapList.add(employees);
    recapList.add(objects);

    oReport.writeReportToExcel(recapList);

按照建议,我删除了泛型

 public void writeReportToExcel(List datas)    {

    try {
        Bean2Excel oReport = new Bean2Excel();

        for (int i = 0;i<datas.size();i++){

            List data = (List)datas.get(i);
          ...
      }
}

最佳答案

参数的类型不同,T。您可以删除通用定义或使它们实现公共(public)接口(interface)。

必须使用 var args 吗?

关于java - 列表的 var 参数作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24410135/

相关文章:

java - 如何比较 Java 中预期对象属性是动态的两个对象

java - 如何将我给定的字符串转换为日期格式?

Java:什么时候使用属性,什么时候使用方法参数?

java - 二维矩阵的DCT和IDCT在Java中的实现

java - Lambda 和泛型方法

java - 使用 Spring/Java 按日期字段进行 Mongodb 查询

java - 使用 Traces.txt 了解 ANR 错误

java - 配置 GWT 以将完整异常返回给客户端

java - 连接多个辅助表

java - 通过java api验证SMTP服务器身份验证(健康检查包括AUTH)