2010-03-14 12 views
5

Podczas kodowania utworzyłem klasę, która extends ArrayList<> i implements Iterable<>. Kod jest:Reguła java dla rozszerzeń i implementuje

public class Testclass extends ArrayList<Object>, implements Iterable<Object> { } 

Netbeans zgłosił błąd:

'{' expected 

Jak zapobiega to?

+1

działa w czasie zaćmienia. Nie rozumiem, dlaczego byłby to problem. czy możesz wyjaśnić, czym jest błąd, może pomóc. – mtim

+2

Jeśli rozszerzasz ArrayList, mam nadzieję, że twoja klasa ** jest kolekcją **, tzn. Jej natura to grupa elementów. W przeciwnym razie użyj delegacji, tj. Posiadasz wewnętrzną tablicę 'ArrayList'. – kiwicptn

+1

Czy * odczytałeś * błąd? Czy to nie znaczy, że musisz wdrożyć metody zdefiniowane przez Iterator? – BalusC

Odpowiedz

11

Od Komentarze:

error is '{' expected

code is this public class Testclass extends ArrayList<Object>, implements Iterable<Object> { }

usunąć ten przecinek ,. Tam nie pasuje. To tylko błąd składniowy.

W przyszłości prosimy o przeczytanie komunikatu o błędzie. Jeśli nie możesz tego zinterpretować, nawet po drobnym wyszukiwaniu w Google, po prostu zapytaj tutaj, uzupełnij cały komunikat o błędzie i kod, który spowodował to. W ten sposób można lepiej dostosowane odpowiedź szybciej niż zgadywać losowo dla sprawy;)

2

ArrayList nie implementuje Iteratora. Może masz na myśli Iterable?

W każdym razie nie ma problemu z zaimplementowaniem interfejsu, który już istnieje w nadklasie (jest on po prostu nadmiarowy).

Jakiego błędu dostałeś? Wydaje się, że chodzi o coś innego. Jeśli używasz generycznych, czy upewniłeś się, że typy pasują do nadklasy i interfejsu?

Wydaje się również sprzeczne z duchem interfejsów i interfejsów Iterator, aby obiekt był jednocześnie w tym samym czasie. Jest to co najmniej dezorientujące.

+0

przykro mi oznaczało iterable –

1

Dla klasy, która rozciąga ArrayList i implementuje Iterator, potrzebne są trzy metody:

public boolean hasNext() 
public Object next() 
public void remove() 
0

Usuń ze śpiączki pomiędzy i wdraża

Nie wiem, co robisz, ale nie chcesz klasę, która rozciąga ArrayList i implementuje iterator.

Wystarczy zaimplementować listę (a nawet kolekcję, jeśli możesz). Jeśli ktoś chce iteratora, może po prostu wywołać metodę yourList.iterator(). Możesz nawet zwrócić niestandardowy iterator, jeśli naprawdę tego chcesz.

Powiązane problemy