Android Eclipse Plugin에서 super () 호출의 위치가 신뢰할 수있는 코드를 생성 했습니까?


Answers

생성 된 코드에서 이러한 코드 삽입 위치를 항상 신뢰할 수 있습니까?

아니, 때로는 super.method 를 부르고 싶지 않습니다. 때로는 먼저 전화하고 싶을 때가 있습니다. 때로는 마지막 장소에서 전화하기도합니다. 그러나, 나는 방법, 생성자에 대해서 이야기하고 있습니다.

super ()를 호출 할 때 간단한 규칙이나 설명이 있습니까?

이전 super 으로 항상 모든 super 를 보유해야합니다. super를 호출하지 않는 유일한 경우는 수퍼 클래스의 생성자에 매개 변수가없는 경우입니다. 이 경우 컴파일러가 super 를 넣을 것입니다.

나는 각 경우에 수퍼 클래스가하는 일을 exacly로 이해하지 못하기 때문에 항상 // TODO 태그의 정확한 위치에 코드를 삽입한다.

당신이 의심 스럽다면 (나는 슈퍼 메소드에 대해 이야기하고있다.), 당신은 항상 소스 코드를 살펴볼 수있다. Google 코드 검색은 그렇게 할 수있는 좋은 방법입니다. 그런 다음 슈퍼 메서드 앞이나 뒤에 코드를 넣을 지 결정할 수 있습니다. 또는 super 메소드를 전혀 넣지 마십시오.

super 메소드를 두지 않는 것은 컴파일 타임에 유효하다는 것을 명심하십시오. 그러나 super 메소드 (예 : Activity 클래스의 onResume 메소드)를 호출하지 않으면 안드로이드의 일부 메소드가 작동하지 않습니다.

또한 때로는 런타임에 super 메소드를 실행할지 여부를 결정합니다. 이 고전적인 예를 생각해보십시오.

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if( KeyEvent.KEYCODE_BACK == event.getKeyCode() ){
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

사용자가 뒤로 키를 누르면 super 메서드를 호출하지 않습니다. 사용자가하지 않은 경우 작업을 super 메서드에 위임합니다.

Question

많은 안드로이드 메소드, 특히 생성자와 오버라이드 된 메소드에서 super ()를 사용하여 부모 클래스 메소드를 호출해야한다. Eclipse Source> Override / Implement Methods ...를 사용 하면 다음과 같이 TODO 태그가있는 템플릿에서 코드를 얻을 수 있습니다.

public MyCanvas(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}


@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub      
    super.onDraw(canvas);
} 

각 경우에 수퍼 클래스가하는 일을 exacly로 이해할 수 없으므로 항상 // TODO 태그의 정확한 위치에 코드를 삽입합니다. 이 예제에서는 super ()을 생성자의 코드와 onDraw ()의 코드 뒤에 호출합니다.

생성 된 코드에서 이러한 코드 삽입 위치를 항상 신뢰할 수 있습니까? super ()를 호출 할 때 간단한 규칙이나 설명이 있습니까?




Links