2009-02-23 1 views
8

Я хочу создать несколько простых классов-оболочек для существующей библиотеки классов. Чтобы синтаксис был приятным для чтения И приятно угадывать (с помощью завершения кода), я хотел бы удалить методы java.lang.Object.Как скрыть все методы java.lang.Object от завершения кода?

Проблема в том, что все неатомные вещи в java наследуются от Object и, следовательно, имеют эти методы. Я уже пытался создать синтаксис оболочки с помощью перечислений и интерфейсов без успеха; потому что перечисления и интерфейсы также являются java.lang.Objects.

java.lang.Object имеет девять методов, которые я не хочу видеть в завершении кода моих интерфейсов. Вот что я хочу, чтобы удалить (красный) и то, что я хочу, чтобы держать (зеленый):

alt text 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 заявления застройщика к INTERF туз уменьшит видимость метода, например. если построитель реализует больше одного интерфейса. К сожалению, все методы java.lang.Object останутся.

Если этот способ скрывался в Java (возможно, с помощью аннотаций?), Я мог бы создать красивую библиотеку, которая является агностикой IDE (приятное завершение кода везде). Если нет, может быть, есть трюк, по крайней мере, для Eclipse IDE (может быть, плагин?), Который может обеспечить скрытие метода java.lang.Object.

+1

Я думаю, вы можете ограничить эту область определенной средой IDE (например, Eclipse). Я на 99% уверен, что IntelliJ IDE делает это прямо из коробки (т. Е. Сначала ставит наиболее релевантные методы). –

ответ

26

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

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

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

+0

Thx! Если никто не придумает ответ на Java, очень скоро, я соглашусь с этим. – Juve

+0

Я бы рекомендовал этот подход. Вы также можете указать eclipse, какие типы предложений использовать. –

+0

Проблема в том, что если вам нужно toString, например, вы пропустите ее от завершения вообще. Существует потребность в более сложном решении для их соответствия только в том случае, если вы набрали два или более символа или поместили конец списка и внесли их по умолчанию или что-то в этом роде. –

 Смежные вопросы

  • Нет связанных вопросов^_^