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.
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). –