Java从对象检索原始元素

时间:2019-06-18 08:28:29

标签: java arraylist

我是Java的新手,我现在正在尝试的是。

例如,我为员工提供了2个类别1,可以提供姓名号码和电子邮件,对于具有编号类型和状态的车辆有1个类别。

我从API检索两个类的数据,并用所有数据填充ArrayList<Employee>ArrayList<Vehicle>

这两个类都需要通过相同的函数,该函数将基于数据创建一个excel文件。

我目前面临的问题是我想在我的函数中同时使用这两个arraylist,但是基于哪个我可以在函数内部做其他事情,为此,我需要知道将哪个arraylist转发给了功能。我要尝试的操作如下:

我有一个功能

Public static void createExcel(Object[] obj){ //do something }

我给函数指定了Object类型,这样我就可以得到两个arraylists。因此,我按如下方式解析了Arraylist:

ArrayLists<Employee> employees = new ArrayList<>();
employees.add(employee);
Object[] objArray = employees.toArray();
ExcelWriter.createExcel(objArray);

与Vehicle相同。 现在我的问题是如何在createExcel函数中检索传递的数组列表,以及如何从该对象数组获取原始数组列表?还是这不可能,我是否必须以另一种方式做?

编辑:

为了更清楚一点,我希望我的excel函数是这样的:

if(obj == type of ArrayLists<Employee>()){ //retrieve my original employees arraylist here }

与Vehicle相同

2 个答案:

答案 0 :(得分:1)

您可以使用instanceof检查对象的实际类型:

public static void createExcel(Object[] obj){ 
    // Assume array is not empty
    Object o = obj[0];
    if ( o instanceof Employee ) {
         // It's an Employee
    }
    else if ( o instanceof Vehicule ) {
         // It's a Vehicule
    }
    else {
         // Should probably throw an Exception here
    }
}

但是,如果您希望根据参数的类型做不同的事情,为什么还要编写一个函数?

答案 1 :(得分:1)

覆盖createExcel method

public static void createExcel(List<Employee> employees){
    ...
    ExcelWriter.createExcel(employees.toArray());
    ...
}

public static void createExcel(List<Vehicle> vehicles){ 
    ...
    ExcelWriter.createExcel(vehicles.toArray());
    ...
}