2010-03-14 7 views
5

Während der Codierung habe ich eine Klasse erstellt, die extends ArrayList<> und implements Iterable<>. Der Code ist:Java-Regel für erweitert und implementiert

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

Netbeans einen Fehler gemeldet:

'{' expected 

Wie dies verhindert?

+1

funktioniert in Eclipse. Ich sehe nicht, warum es ein Problem wäre. Kannst du klären, was der Fehler ist, könnte es helfen. – mtim

+2

Wenn Sie ArrayList erweitern, hoffe ich, dass Ihre Klasse ** eine '** Sammlung ist, d. H. Es liegt in der Natur einer Gruppe von Elementen. Andernfalls verwenden Sie delegation, d. H. Haben Sie eine interne 'ArrayList'. – kiwicptn

+1

Haben Sie den Fehler * gelesen *? Hat es nicht * nur * gesagt, dass Sie die von Iterator definierten Methoden implementieren müssen? – BalusC

Antwort

11

Aus den Kommentaren:

error is '{' expected

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

entfernen, die , Komma. Es gehört nicht dorthin. Es ist nur ein Syntaxfehler.

In Zukunft, bitte lesen die Fehlermeldung. Wenn Sie es nicht interpretieren können, auch nicht nach ein wenig Googeln, fragen Sie es einfach hier, komplett mit der gesamten Fehlermeldung und dem Code, der es verursacht hat. So können Sie besser geeignet Antworten bekommen, werden früher als zufällig für die Ursache zu erraten;)

2

ArrayList implementiert Iterator nicht. Vielleicht meinst du Iterable?

Wie auch immer, es ist kein Problem, eine Schnittstelle zu implementieren, die eine Superklasse bereits implementiert (es ist nur redundant).

Welchen Fehler bekommen Sie? Es scheint um etwas anderes zu gehen. Wenn Sie Generika verwenden, haben Sie sichergestellt, dass die Typen in Superklasse und Schnittstelle übereinstimmen?

Auch scheint es gegen den Geist der Sammlung und Iterator-Schnittstellen zu sein, ein Objekt zu haben, das gleichzeitig ist. Zumindest ist es ziemlich verwirrend.

+0

sorry ich meinte iterable –

1

Für eine Klasse, die Arraylist und implementiert Iterator erstreckt, müssen Sie drei Methoden:

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

das Koma entfernen zwischen und implementiert

Ich weiß nicht, was Sie tun, aber Sie wollen nicht eine Klasse, die sich Arraylist und implementiert Iterator.

Implementieren Sie einfach List (oder sogar Collection, wenn Sie können). Wenn jemand den Iterator haben möchte, kann er einfach die Methode yourList.iterator() aufrufen. Sie können sogar Ihren benutzerdefinierten Iterator zurückgeben, wenn Sie das wirklich wollen.

Verwandte Themen