마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바 문법 질문입니다.

0 추천

안녕하세요.

public void onReceive( ) {
        getMyClass().mothod();
    }
 
private MyClass getMyClass(){
        return MyClass;
}
 
class MyClass{
        public static void mothod(){;}    
}
 
위 코드와 같이 static 메소드를 가지는 클래스를 가져와서  메소드를 호출하는 코드를 짜고 싶은데요. 저런식의 문법은 에러가 나네요.. 저런 경우에는 어떤식으로 코드를 작성해야 하는지 궁급합니다.
여룽이 (4,750 포인트) 님이 2015년 4월 22일 질문

1개의 답변

0 추천
method()가 static이라는 의미는 MyClass 객체를 생성할 필요가 없는것이므로

onReceive()에서 MyClass.method() 이렇게 사용하면 됩니다.

getMyClass()는 필요 없는 메소드입니다.
Gradler (109,780 포인트) 님이 2015년 4월 22일 답변
추상클래스에 스태틱 메소드 선언 안될텐데요
public void onReceive( ) {
        getMyClass().mothod();
    }

    private MyClass getMyClass(){
        return new MyClass();
    }

    public static abstract class ISDCard {
        static public void onReceive(){
            System.out.println("부모");
        }
    }
    static class MyClass extends ISDCard{
        public static void mothod(){}    
    }

지금 이걸 하고 싶은건가요?? 질문이 명확하지 않으니 답변다시는 분들도 혼란이 오잖아요 ㅎㅎ
일단 이렇게 하면 에러는 안납니다 뭘 하고 싶으신건진 모르겠지만..
스태틱 메소드를 오버라이딩 하신다는 말씀?
해도 오버라이드 안될텐데요?
오버라이드 하는 이유가 하위타입 객체를 생성해서 상위타입 레퍼런스에 집어 넣서 다형성을 만든다는 말인데 스태틱 메소드 오버라이드해도 그냥 상위 타입 스태틱 메소드 실행돼요
네 ㅜㅜ 이제 알았네네요.스태틱은 오버라이드해도 부모가 실행되서 안되겠네요.. 뭘 하고 싶다기보다 저런식의 코딩은 안되나 생각해보다가 질문올렸네요. 질문을 넘 대충올렷나바요 흑
정확히 말하면 오버라이드가 아녜요. 그냥 다른 스태틱 메소드인데 이름만 같은거지요.
...