[英]Can I declare the ArrayList in this way?
Iterable<Board> theNeighbors = new ArrayList<Board>();
這是我對ArrayList
theNeighbors的初始化,它使用了INTERfce Iterable
進行聲明。 但是,當我對剛剛構建的變量使用方法add()
,編譯器會發出警報
Board.java:78:錯誤:找不到符號theNeighbors.add(nb); ^
符號:方法添加(板)
location:變量Iterable類型的鄰居
是什么讓它發生? 在我使用的另一種情況
List<Board> theNeighbors = new ArrayList<Board>();
add()
方法效果很好。 您為聲明選擇的界面是否應始終具有您稍后要調用的方法?
如果您閱讀了Iterable
接口的文檔 ,您將看到,如您所述, add()
方法不存在。
您為聲明選擇的界面是否應始終具有您稍后要調用的方法?
您選擇的界面應該具有您計划實例化和使用的對象的所有行為。
當您像這樣聲明ArrayList
:
Iterable<Board> theNeighbors = new ArrayList<Board>();
JVM將theNeighbors
視為Iterable
,因此無法找到add()
方法。 另一方面,如果以這種方式定義ArrayList
:
List<Board> theNeighbors = new ArrayList<Board>();
然后JVM 可以找到add()
方法,因為所有類型的List
都有這個方法(和行為)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.