我有以下方法,我希望将不同的对象(POJO)传递给它。我该如何处理正确初始化ArrayList outObjects
?下面的代码导致此行警告:
ArrayList outObjects = new ArrayList<>();
&#34; ArrayList是原始类型。对泛型类型ArrayList的引用应该参数化&#34;
我似乎找不到如何初始化outObjects
并仍保持我的代码功能的解决方案。我有一些基本的设计缺陷吗?
澄清:
我希望代码能够处理不同类型的对象,这就是为什么我不能使用初始化,例如。 ArrayList<Company>
,我想保持它的通用性,以便它也可以处理Customer
,Reservation
等。这些对象以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;
}
答案 0 :(得分:0)
如果您只是在outObjects数组中存储Company类型的对象,请执行以下操作:
ArrayList<Company> outObjects = new ArrayList<>();
或者如果你需要存储其他对象,你可以做到:
ArrayList<Object> outObjects = new ArrayList<>();
答案 1 :(得分:0)
由于所有类都在Java中扩展Object,并且期望的类不共享另一个子类,因此可以像这样初始化它。
ArrayList<Object> outObjects = new ArrayList<Object>();