2013-05-21 4 views

답변

1

공통적 인 실수는 일반적인 static 메서드를 포함하는 클래스를 만든 다음 상속을 사용하여 메서드가 필요한 클래스에서 메서드에 쉽게 액세스 할 수 있도록하는 것입니다.

그래서 당신은 할 것이다 :

class Utility { 
    static utilityMethod() { 
     // do something usefull 
    } 
} 

class Application extends Utility { 
    someMethod() { 
     utilityMethod(); 
    } 
} 

이를 나누기 지향 원칙을 반대하지만, ApplicationClass이 서브 클래스 UtilityClass 있어야 적이있다. 대신 사용한다 :

final class Utility { 
    Utility() { 
     // avoid instantiation 
    } 

    static utilityMethod() { 
     // do something useful 
    } 
} 

class Application { 
    someMethod() { 
     UtilityClass.utilityMethod(); 
    } 
} 

지금 자바 언어 설계자가 사용하기 위 더 매력적하기 위해 사용하는 여러 가지 방법이 있습니다. 하나는 정적 가져 오기 개념입니다. 다른 하나는 인터페이스가 정적 메서드를 정의 할 수있게합니다. 이 경우 위가 될 것입니다 : 대부분의 수입이 자동적으로는 IDE에 의해 처리 특히 때문에, 훨씬 짧은

import static Utility.utilityMethod; 

final interface Utility { 
    static utilityMethod() { 
     // do something useful 
    } 
} 

class Application { 
    someMethod() { 
     utilityMethod(); 
    } 
} 

합니다. 위의에 대해 좀 더 논의/포인터 here를 찾을 수 있습니다. Java 7까지는 인터페이스에서 정적 메소드를 선언 할 수 없습니다.