Iterable<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
这是我对ArrayListtheNeighbors的初始化,它使用了interafce Iterable进行声明.但是,当我使用方法add()来构建我刚刚构建的变量时,编译器会发出警报
Board.java:78:错误:找不到符号theNeighbors.add(nb); ^
符号:方法添加(Board)
位置:变量类型Iterable的邻居
是什么让它发生?在我使用的另一种情况
List<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
该add()方法效果很好.您为声明选择的界面是否应始终具有您稍后要调用的方法?
Tim*_*sen 34
如果你阅读文档的Iterable界面,你会看到,正如你提到的,该add()方法不存在.
您为声明选择的界面是否应始终具有您稍后要调用的方法?
您选择的界面应该具有您计划实例化和使用的对象的所有行为.
当你宣布ArrayList这样的时候:
Iterable<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
JVM视为theNeighbors一个Iterable,因此无法找到该add()方法.另一方面,如果你这样定义ArrayList:
List<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
然后JVM 可以找到一个add()方法,因为所有类型List都有这个方法(和行为).
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |