2011-06-22 19 views
0

ここにシナリオがあります:Eclipseのsupressコンパイラエラー - 回避策がありますか?

私は私のEclipseプロジェクトで構築したアノテーションを含むプログラムを持っています、それは 'フラグ'と呼ばれています。 'flag'アノテーションに 'id'要素があります ソケット接続を確立する 'connect'というメソッドがクラスにあります。 私は私が最終的に望むことは、次の

public class Foo { 
    @flag(id = 'slowConnection') 
    public boolean connect() { 
     // connect logic here... 
    } 

    @flag(id = 'mediumConnection') 
    public boolean connect() { 
     // medium connection logic here 
    } 

    @flag(id = 'fastConnection') 
    public boolean connect() { 
     // fast connection logic here 
    } 
} 

のようなものは私がすることができますされ、その前に「フラグ」注釈を配置することにより、connectメソッドに注釈を付け、それに「ID」今

public class Foo { 
    @flag(id = 'slowConnection') 
    public boolean connect() { 
     // connect logic here... 
    } 
} 

を与えますここで詳しく述べる。私の目的は、クラスへの入力パラメータに基づいて、コンパイル時に正しい 'connect'メソッドのみを含めることができるようにすることです。メソッドのオーバーロードは、メソッドのシグネチャを変更したくない場合でも、これを行うのと似た方法です。私はまた、継承がこれを行う方法であることを知っています。私は上記のコードを持っているときにEclipseは(正しくはそうです)、重複したメソッドがあると言っています。私はプログラムがコンパイルされる前に、「接続」のいずれかの方法ではなく、すべてのを取り除くためにいくつかのロジックを実行するように私はプログラムをコンパイル私は前に、Eclipseの上記を進めることができることをとにかくありますか? Eclipseの自動コンパイルを自動的に無効にする方法はありますか?任意のヒントやポインタが役立ちます。

+0

ここに注釈を入れる必要はありません。これは純粋なJavaで答えごとに行うことができます。 – artbristol

+0

コンパイル時には、ファクトリの代わりに依存関係注入を使うことができます(下記の回答を参照)。また、プロパティファイルを使って注入する接続のタイプを指定することもできます。 – Tnem

+0

@Tem私はもう少し詳細を教えていただけますか? – Joeblackdev

答えて

4

あなたは別のインターフェイスに接続ロジックを移動し、適切な接続を生成するファクトリパターンを使用します。

public interface IFoo { 
    void connect(); 
} 

final class SlowFoo implements IFoo { 
    //Implementation for slow connections 
} 

final class MediumFoo implements IFoo { 
    //Implementation for medium connections 
} 

final class FastFoo implements IFoo { 
    //Implementation for fast connections 
} 

クラスが共通のコードを共有している場合、あなたはFooBaseのように、基本クラスの導入を検討すべきです。

工場は、このようになります。

public final class FooFactory { 
    public IFoo create() { 
     if (Connection.speed < 100) //Fictive value 
      return new SlowFoo(); 
     if (Connection.speed < 1000) //Fictive value 
      return new MediumFoo(); 

     return new FastFoo(); 
    } 
} 

をコンパイルは良いアイデアを私見ではありません前に、ソースコードをいじり。

+0

良いポスト、私は例が好きです。しかし、私は私のアプローチで作業できるかどうかを見ています。 eclipseで自動コンパイルを無効にして、コードを書くときにコードコンパイルを要求するまでエラーを受け取らないようにすることは可能ですか? – Joeblackdev

+2

"Window - Preferences - Java - Editor - 入力時に問題を報告"という設定を試すことができます。しかし、この醜い構文のせいで、プロジェクト全体の構文チェックをあきらめてしまうので、私はまだそれをお勧めしません。 Javaを書いて、それが提供する可能性を使用してください:-) – Matthias

+0

私はそれが私が必要と思うものです。その設定は、ユーザーが保存するまでエラーを無効にします。助けてくれてありがとう – Joeblackdev

関連する問題