簡體   English   中英

我可以用這種方式聲明ArrayList嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM