2009-02-23 5 views
8

Ich möchte einige einfache Wrapper-Klassen für eine vorhandene Klassenbibliothek erstellen. Um die Syntax lesefreundlich zu machen UND (über Code-Vervollständigung) leicht zu erraten, möchte ich die Methoden von java.lang.Object entfernen.Wie kann ich alle Methoden von java.lang.Object vor Codevervollständigung verstecken?

Das Problem ist, dass alle nicht-atomare Dinge in Java von Object erben und somit diese Methoden haben. Ich habe bereits versucht, die Wrapper-Syntax über Enums und Interfaces ohne Erfolg zu erstellen; weil enums und Schnittstellen sind auch java.lang.Objects.

java.lang.Object hat neun Methoden, die ich nicht in der Code-Vervollständigung meiner Schnittstellen sehen möchte. Hier ist, was ich (rot) entfernen wollen, und was ich will halten (grün):

alt text http://ju.venile.de/upload/java-lang-object-methods.png

Hier einige Beispiel-Code für die Erstellung von schönen Wrapper um bestehende Klassen (Builder-Muster):

public interface IMySyntax{ 
    public IMySyntax myMethod1(); 
    public IMySyntax myMethod2(); 
} 

public class MyBuilder implements IMySyntax{ 
    public static IMySyntax build(){ return (IMySyntax) new MyBuilder() } 
    public IMySyntax myMethod1(){ /* do something */ return (IMySyntax) this } 
    public IMySyntax myMethod2(){ /* do something */ return (IMySyntax) this }  
} 

Verwendung des neuen Wrapper-Code sollte wie folgt aussehen:

MyBuilder.build() 
     .myMethod1() 
     .myMethod2(); 

Casting alle this Aussagen des Bauherrn zu einem interf ace wird die Methodensichtbarkeit verringern, z.B. wenn der Builder mehr als eine Schnittstelle implementiert. Alle java.lang.Object-Methoden bleiben leider erhalten.

Wenn das Ausblenden dieser Methode in Java möglich ist (vielleicht mit Anmerkungen?), Könnte ich eine nette Bibliothek erstellen, die IDE-unabhängig ist (nette Code-Vervollständigung überall). Wenn nicht, dann gibt es vielleicht zumindest einen Trick für die Eclipse-IDE (vielleicht ein Plugin?), Der das Verbergen der java.lang.Object-Methode ermöglichen kann.

+1

Ich denke, dass Sie diesen Bereich auf eine bestimmte IDE (wie Eclipse) begrenzen möchten. Ich bin mir zu 99% sicher, dass die IntelliJ-IDE dies sofort macht (d. H. Sie stellt die relevantesten Methoden an erster Stelle). –

Antwort

26

für Eclipse 3.4 zumindest können Sie folgendes tun:

1) zu Einstellungen gehen -> Java -> Erscheinungsbild -> Typ Filter 2) Klicken Sie auf Hinzufügen, und geben Sie java.lang.Object

Jetzt in Code assistieren, werden die direkt von java.lang.Object vererbten Methoden verschwinden

+0

Thx! Wenn niemand sehr bald eine Java-basierte Antwort hat, werde ich diese akzeptieren. – Juve

+0

Ich würde diesen Ansatz empfehlen. Sie können Eclipse auch mitteilen, welche Arten von Vorschlägen Sie verwenden möchten. –

+0

Das Problem, dass, wenn Sie zum Beispiel toString benötigen, Sie es von der Fertigstellung überhaupt vermissen. Es besteht eine Notwendigkeit für eine ausgefeiltere Lösung, um sie nur dann zu vergleichen, wenn Sie zwei oder mehr Zeichen eingegeben haben, oder das Ende der Liste setzen und sie standardmäßig grau oder grau ausmalen. –

Verwandte Themen