2011-08-10 7 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

적어도 내 코드 또는 귀하의 코드에서 여전히 약간의 실수가 있습니다. 이 정적 최종 필드를 초기화 할 수 없기 때문에 코드를 복사하는 중에 컴파일 오류가 발생했습니다. 'final' 키워드를 제거하면 (예상대로)이 "문제"가 해결되지만 fleabite로 넘어 가서 무시할 수 있습니다. – 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

관련 문제