它指出:“無法從 List 轉換為 ArrayList”
為了 :
return (ArrayList) eventRepository.findAll();
為什么?
uj5u.com熱心網友回復:
您試圖從更通用的型別(List)向下轉換為更具體的型別(ArrayList)。編譯器在編譯時允許它,因為它可能會成功:回傳的串列畢竟可能是一個 ArrayList。
但是在運行時,如果回傳的串列不是 ArrayList 型別怎么辦?例如,如果它實際上是一個 LinkedList 怎么辦?然后在運行時,轉換為 ArrayList 將失敗。
你必須讓回傳的串列是一個 ArrayList 嗎?通常,您可以僅通過 List 介面與存在的所有行為進行互動,而無需處理 ArrayList 的細節。
uj5u.com熱心網友回復:
我假設您正在CrudRepository為您的 eventRepository 使用 a。此類回傳一個 Iterable,它不能轉換為 ArrayList。
您可以通過兩種方式解決該問題:
第一個解決方案是像這樣覆寫存盤庫
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface EventRepository extends CrudRepository<Event, Long> {
// you can even you ArrayList as return, but i would recomment List
List<Event> findAll();
}
第二種解決方案是將 Iterable 轉換為 List,因為您可以簡單地按照本教程https://www.baeldung.com/java-iterable-to-collection
uj5u.com熱心網友回復:
嘗試以下操作:
List<Integer> a = new LinkedList<>();
a.add(1);
a.add(2);
a.add(3);
// throw "ClassCastException"
ArrayList<Integer> b = (ArrayList<Integer>) a;
System.out.println(b);
// approach 1: use "addAll"
ArrayList<Integer> c = new ArrayList<>();
c.addAll(a);
System.out.println(c); // [1, 2, 3]
// approach 2: feed directly when creating instance
ArrayList<Integer> d = new ArrayList<>(a);
System.out.println(d); // [1, 2, 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436530.html
下一篇:重試邏輯以檢查資料庫中的現有鍵
