2010-08-30 7 views
6

Manchmal tendiere ich Autocomplete von Eclipse (3.5) für anonyme innere Typen neigen. Aus irgendeinem Grund setzt Eklipse immer End-Klammer und Semikolon in falscher Reihenfolge. Ein kleines Beispiel:Eclipse 'Anonymous Inner Type' - Autocomplete

button.addActionListener(new Act...) // <-- Pressing Autocomplete (strg+space) 

Ergebnisse in:

button.addActionListener(new ActionListener() 
{ 

    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
    // TODO Auto-generated method stub 

    } 
};) // <-- why? 

Didnt festgestellt, dass überall in codingtemplates von Eclipse. Ich kann auch noch nicht auf 3.6 umschalten, obwohl ich nicht weiß, ob das dort schon "behoben" ist (wenn das eigentlich ein Fehler sein soll), da Eclipse wahrscheinlich einfach nicht weiß, dass es die Klammer hinter Autocomplete benutzen muss. Vermutung, dass die Handhabung etwas kompliziert ist, da er nicht prüft, welche Zeichen hinter der automatischen Vervollständigung stehen, und deshalb kann er die Endklammer nicht benutzen? Korrigiere mich, wenn ich falsch liegen sollte.

Ich denke, ich habe gerade einen schlechten Tag (gemeinsame montags!), Weshalb es mich jetzt ärgert, aber vielleicht hat jemand eine Idee, wie man dieses Verhalten beeinflussen kann?

Greets, ymene

Antwort

4

Es scheint (Art) in Helios (3.6) zu arbeiten. Es legt das Semikolon überhaupt nicht an.

+0

+1. Das passiert nicht mehr in Helios, vielleicht stört mich das nicht mehr so ​​sehr. :-) –

+0

noch ein Grund, um endlich zu wechseln, danke für diese Info! – crusam

2

Ich glaube, ich habe gerade einen schlechten Tag (gemeinsame Mondays!), Weshalb es mir jetzt annyoys, aber vielleicht hat jemand eine Idee, wie dieses Verhalten beeinflussen ?

Einen Fehler mit Eclipse einreichen.

Dieses Verhalten stört mich etwas, aber nicht in dem Ausmaß, einen Fehler darüber zu archivieren.

+0

das gleiche für mich, aber da es scheint in helios behoben zu sein, einen Versuch sowieso nicht mehr wert! ;) – crusam

1

dies versuchen stattdessen dann (es ist wahrscheinlich besser Stil sowieso!):

ActionListener actionListener = new Act... 
button.addActionListener(actionListener); 

Dies ist, was ich glaube, sie (wie in diesem Fall das Semikolon ist nützlich) wohl im Sinn hatte. Wenn Helios dies jedoch durch Weglassen des Semikolons korrigiert, wie es Skip Head vorschlägt, dann scheint es, als hätten sie Probleme festzustellen, ob Sie in Klammern schreiben oder nicht - vorausgesetzt, Ihr Code kompiliert zu diesem Zeitpunkt noch nicht.

+0

Ich dachte auch über diese Lösung nach, aber normalerweise versuche ich lokale Variablen zu vermeiden, wenn sie nicht wirklich notwendig wären, außer zum Lesen. Aber in diesem Fall, denke ich, liest es sich immer noch gut und fügt es direkt hinzu. – crusam

+0

Ohne zu viel über Stil zu debattieren, versichere ich meine Behauptung, indem ich sage, dass die Verwendung von lokalen Variablen auf diese Weise es Ihnen ermöglicht, Ihren Code leichter zu pflegen, ähnlich wie bei geschweiften Klammern oder Schleifen Konstrukte: Sie sind bereit, nur zu verwenden, wenn Sie sie brauchen; sie sind leicht zu lesen, da jede Aussage nur eine Sache nach der anderen macht; und der Compiler wird (wahrscheinlich) sowieso auf die gleiche Weise optimieren. – Robert