Я хочу создать несколько простых классов-оболочек для существующей библиотеки классов. Чтобы сделать синтаксис удобным для чтения и хорошим для угадывания (посредством завершения кода), я бы хотел удалить методы java.lang.Object .
Проблема в том, что все неатомарные вещи в Java наследуются от Object и, следовательно, имеют эти методы. Я уже пытался создать синтаксис оболочки через перечисления и интерфейсы, но безуспешно; потому что перечисления и интерфейсы также java.lang.Objects .
java.lang.Object имеет девять методов, которые я не хочу видеть в завершении кода моих интерфейсов. Вот что я хочу удалить (красный) и что я хочу сохранить (зеленый):
альтернативный текст http://ju.venile.de/upload/java-lang-object-methods.png
Вот пример кода для создания красивых оболочек вокруг существующих классов (шаблон 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 }
}
Использование нового кода оболочки должно выглядеть следующим образом:
MyBuilder.build()
.myMethod1()
.myMethod2();
Приведение всех операторов this
к интерфейсу уменьшит видимость метода, например, если строитель реализует более одного интерфейса. К сожалению, все методы java.lang.Object останутся.
Если бы этот метод был скрыт в Java (возможно, с помощью аннотаций?), Я мог бы создать хорошую библиотеку, независимую от IDE (хорошее завершение кода везде). Если нет, то, возможно, есть хитрость по крайней мере для Eclipse IDE (может быть, плагина?), Который может обеспечить скрытие метода java.lang.Object.