我想将不同的对象传递给我的方法,如何解决ArrayList是一个原始类型...警告

时间:2016-04-28 20:56:47

标签: java arraylist

我有以下方法,我希望将不同的对象(PO​​JO)传递给它。我该如何处理正确初始化ArrayList outObjects?下面的代码导致此行警告:

ArrayList outObjects = new ArrayList<>();

&#34; ArrayList是原始类型。对泛型类型ArrayList的引用应该参数化&#34;

我似乎找不到如何初始化outObjects并仍保持我的代码功能的解决方案。我有一些基本的设计缺陷吗?

澄清: 我希望代码能够处理不同类型的对象,这就是为什么我不能使用初始化,例如。 ArrayList<Company>,我想保持它的通用性,以便它也可以处理CustomerReservation等。这些对象以Object inObject

的方式提供给方法
public List<Object> executeSelect(String query, Object inObject) {
    ArrayList outObjects = new ArrayList<>();
    try {
        ObjectMapper mapper = new ObjectMapper();

        PreparedStatement ps = connectionGlobal.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        ResultSetMetaData rsmd = rs.getMetaData();

        int columns = rsmd.getColumnCount();
        ArrayList<String> namesOfColumns = new ArrayList<String>();

        for (int i = 0; i < columns; i++) {
            namesOfColumns.add(rsmd.getColumnName(i + 1));
        }

        Object result = inObject.getClass();

        if (result.equals(Company.class)) {
            outObjects = new ArrayList<Company>();
        }

        while (rs.next()) {
            Map<String, String> map = new HashMap<String, String>();
            for (int i = 0; i < columns; i++) {
                String value = rs.getString(i + 1);
                if (rs.wasNull()) {
                    map.put(namesOfColumns.get(i), "{NULL}");
                } else {
                    map.put(namesOfColumns.get(i), value.trim());
                }

            }

            Company company = mapper.convertValue(map, Company.class);
            outObjects.add(company);
        }

    } catch (Exception e) {
        System.out.println(e);
    }

    return outObjects;
}

2 个答案:

答案 0 :(得分:0)

如果您只是在outObjects数组中存储Company类型的对象,请执行以下操作:

ArrayList<Company> outObjects = new ArrayList<>();

或者如果你需要存储其他对象,你可以做到:

ArrayList<Object> outObjects = new ArrayList<>();

答案 1 :(得分:0)

由于所有类都在Java中扩展Object,并且期望的类不共享另一个子类,因此可以像这样初始化它。

ArrayList<Object> outObjects = new ArrayList<Object>();