Как я могу скрыть все методы java.lang.Object от завершения кода?

я хочу создать несколько простых классов-оболочек для существующей библиотеки классов. Чтобы синтаксис был приятным для чтения И приятным для угадывания (через завершение кода), я хотел бы удалить методы 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.

Ответов (1)

Решение

По крайней мере, для Eclipse 3.4 вы можете сделать следующее:

1) Перейдите в Настройки -> Java -> Внешний вид -> Фильтры типов 2) Нажмите Добавить и введите java.lang.Object

Теперь в помощнике по коду методы, унаследованные непосредственно от java.lang.Object, исчезнут