2011-08-10 12 views
3

まあ例外処理とのインタフェースに静的フィールドを初期化します正しく処理されません。しかし、私はインターフェイスに静的なブロックを置くことはできません。私はEnumを構築することを考えましたが、すでにこの問題に直面していた人がいました。実際には、私はインターフェイスを使用する必要があるので、この静的フィールドをクラスに入れる機会はありません。実際に、私はインターフェイスで次の操作を実行したいと思い、

ありがとうございます。

+1

なぜインターフェイスを使用する必要がありますか?これは有用な要求のようには聞こえません...これは深刻なアプリケーションコードです。とにかくインターフェイスに入れるものは何もありません –

+0

@pvblivs私のアプリケーション/フレームワークを "設計"したとき、私はinferfaceを持つことに決めました。それには理由がありますが、意図したのと同じ機能を実装するための別の方法があると思います。 – mozi

答えて

4

これはやや間接的に処理できます。 (コードはテストされていません)

public interface ObjectMethods 
    { 
     public static class CONSTANTS 
     { 
       static final Method getModulus ; 
       static 
       { 
        try 
        { 
          getModulus = RSAPublicKey.class.getMethod("setModulus", byte[].class, short.class, short.class); 
        } 
        catch (Exception cause) { //handle it } 
       } 
     } 

    } 
+0

非常に面白い!!どうもありがとう。これはまさに私がやりたいもののように見えます。 – mozi

+0

少なくとも私のコードにもあなたのものにも少し間違いがあります。このstatic finalフィールドを初期化できなかったため、コードをコピーする際にコンパイルエラーが発生しました。 'final'キーワードを削除すると(期待どおり)この"問題 "が解決されますが、あなたはそれを上書きすることができます。 – mozi

+0

@moziコンパイルしたりテストしたりすることなくアイデアを投稿したので、投稿されたコードのコンパイルエラー。 – emory

4

例外を巻き込むtry/catchブロックでロジックをラップする静的ヘルパークラスを作成できますか?

public static class ObjectMethodHelper 
{ 
    public static Method getModulusMethod() { 
     try { 
      return RSAPublicKey.class.getMethod("setModulus", byte[].class, short.class, short.class); 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

public interface ObjectMethods 
{ 
    static Method getModulus = ObjectMethodHelper.getModulusMethod(); 
} 
+0

あなたの好きなことに感謝しますが、私はエモリーのアプローチを好むと思います。 =) – mozi

+0

どのようにしてメソッドを割り当てますか?getModulus = ObjectMethodHelper.getModulusMethod(); public static void getModulusMethod()の戻り値の型は無効です。 –

+0

@AbhijitChakra:いいキャッチ。一定。 – StriplingWarrior

関連する問題