Iterable<Board> theNeighbors = new ArrayList<Board>();
Oto moja inicjalizacja dla ArrayList
theNeighbour, który używa interafce Iterable
do deklaracji. Jednakże, jak użyć metody add()
do zmiennej po prostu zbudowany, alarmy kompilatoraCzy mogę zadeklarować ArrayList w ten sposób?
Board.java:78: error: cannot find symbol theNeighbors.add(nb); ^
symbol: method add(Board)
location: variable theNeighbors of type Iterable
Co sprawia, że tak się stało? W innym przypadku używam metody
List<Board> theNeighbors = new ArrayList<Board>();
Metoda działa dobrze. Czy to prawda, że interfejs wybrany do deklaracji powinien zawsze mieć metodę, którą chcesz wywołać później?
Tak, zmienna o nazwieNeighbors jest zmienną Iterable, która nie ma metody add(). Jednakże, jeśli chcesz użyć zarówno deklaracji iteracyjnej, jak i metody add(), możesz użyć ((List) theNeighbors) .add (nb); – furkan3ayraktar
Czy java używa tego mechanizmu, aby uniemożliwić zainicjowanie tej zmiennej inną implementacją, która nie powoduje – tonyabracadabra