我有以下方法,我希望傳遞不同的對象(POJO)。我應該如何正確處理初始化ArrayList outObjects
?結果如下代碼警告在這條線:我想傳遞不同的對象到我的方法,如何解決ArrayList是一個原始類型...警告
ArrayList outObjects = new ArrayList<>();
「的ArrayList是一個原始類型引用泛型類型的ArrayList應該是參數化。」
我似乎無法找到一個解決方案如何初始化outObjects
並仍然保留我的代碼funcional。我有一些基本的設計缺陷嗎?
澄清: 我希望代碼能夠處理不同類型的對象,這就是爲什麼我不能使用初始化例如。 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;
}
感謝您的建議。如果我嘗試初始化它作爲ArrayList對象,我在這裏得到的問題'if(result.equals(Company.class)){ \t \t \t \t outObjects = new ArrayList(); \t \t \t}類型不匹配:無法從ArrayList 轉換爲ArrayList
如果您需要保留不同類型的對象,那麼只需將'outObjects'保留爲ArrayList
啊輝煌,我不知道爲什麼我補充說!它解決了這個問題。先生非常感謝您! – Tuukka