Je veux créer des classes wrapper simples pour une bibliothèque de classes existante. Pour rendre la syntaxe agréable à lire ET agréable à deviner (via l'achèvement du code) je voudrais supprimer les méthodes de java.lang.Object.Comment puis-je cacher toutes les méthodes java.lang.Object de l'achèvement du code?
Le problème est que toutes les choses non-atomiques dans Java héritent d'Object et ont donc ces méthodes. J'ai déjà essayé de créer la syntaxe wrapper via enums et interfaces, sans succès; car enums et les interfaces sont également java.lang.Objects. Java.lang.Object a neuf méthodes que je ne veux pas voir dans l'achèvement du code de mes interfaces. Voici ce que je veux supprimer (rouge) et ce que je veux garder (vert):
alt text http://ju.venile.de/upload/java-lang-object-methods.png
Voici quelques exemples de code pour créer des emballages agréables autour des classes existantes (modèle Builder):
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 }
}
Utilisation du nouveau code d'emballage devrait ressembler à ceci:
MyBuilder.build()
.myMethod1()
.myMethod2();
casting toutes this
déclarations du constructeur à un interf as va réduire la visibilité de la méthode, par ex. si le constructeur implémente plus d'une interface. Toutes les méthodes java.lang.Object resteront malheureusement.
Si cette méthode de masquage était possible en Java (peut-être en utilisant Annotations?), Je pourrais créer une belle bibliothèque agnostique IDE (complétion de code sympa partout). Sinon, peut-être qu'il y a un truc pour au moins l'Eclipse IDE (peut-être un plugin?) Qui peut cacher java.lang.Object.
Je pense que vous pourriez vouloir limiter cette portée à un IDE particulier (comme Eclipse). Je suis sûr à 99% que l'IDE IntelliJ le fait dès la sortie de la boîte (c'est-à-dire qu'il met les méthodes les plus pertinentes en premier). –