2009-02-23 130 views
8

我想爲現有的類庫創建一些簡單的包裝類。爲了使語法很好閱讀和很好猜(通過代碼完成)我想刪除java.lang.Object的方法。如何從代碼完成中隱藏所有的java.lang.Object方法?

問題是,java中的所有非原子事物都從Object繼承,因此具有這些方法。我已經嘗試通過枚舉和接口創建包裝語法,但沒有成功;因爲枚舉接口也是java.lang.Objects

java.lang.Object有9個方法,我不想在代碼完成我的接口中看到。這是我想刪除(紅色),我想保留什麼(綠色):

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 ace會降低方法的可見度,例如如果構建器實現更多的那個接口。不幸的是,所有的java.lang.Object方法都會保留。

如果此方法隱藏可能在Java中(可能使用Annotations?),我可以創建一個IDE不可知的良好庫(到處都有很好的代碼完成)。如果沒有,至少Eclipse IDE(也許是一個插件)可能會有一個技巧,它可以提供java.lang.Object方法隱藏。

+1

我想你可能想限制這個範圍到一個特定的IDE(如Eclipse)。我99%肯定IntelliJ IDE是這樣開箱即用的(即它首先提供了最相關的方法)。 – 2009-02-23 19:43:07

回答

26

對於Eclipse 3.4至少可以做到以下幾點:

1)進入設置 - >爪哇 - >外觀 - >型過濾器 2)單擊添加,並在代碼輸入java.lang.Object

現在協助,直接從java.lang.Object繼承的方法將消失

+0

Thx! 如果沒有人很快提出基於Java的答案,我會接受這個答案。 – Juve 2009-02-24 07:47:41