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

AppCompatActivity.java 에서 @callsuper

0 추천
/**
 * Notifies the Activity that a support action mode has been started.
 * Activity subclasses overriding this method should call the superclass implementation.
 *
 * @param mode The new action mode.
 */
@Override
@CallSuper
public void onSupportActionModeStarted(@NonNull ActionMode mode) {
}

이 메서드는AppCompatActivity의 메서드 입니다. 

@CallSuper가 붙어있는데요.. 인터페이스의 구현인데 선언된게 아무것도 없으므로 

궂이 자녀클래스가 super를 해야 하는지 의문이 드네요.. 

왜 그런지 아시는 분 계신가요?

stfrd10 (200 포인트) 님이 2017년 2월 15일 질문
stfrd10님이 2017년 2월 15일 수정
AppCompatCallback을 subClass에서 구현하면 클래스의 의도도 명확해지고 오버라이드된 메서드들이 어디에 속하는지 알기 쉬운데 왜 궂이 AppcompatActivity에서 구현하나라는 의문을 가지고 있었습니다. 답변자 분들의 의견을 본 결과 개발자가 차기 플랫폼에서 AppCompatCallback을 사용할 가능성이 있으므로 번거로운 호환작업이 필요없게끔 해놓았다고 생각할 수 있습니다. 하지만 클래스의 명확성을 해치는 것이기도 합니다. 결국 비지니스의 연속성이 코드의 명확성보다 더 우선시 되었다고 해도 되겠네요.. 답변자분들 감사합니다.

2개의 답변

+1 추천
질문자님의 질문 취지를 제가 제대로 이해한건지 모르겠네요.

함수 명으로 보았을때 AppCompatActivity와 의존관계에 있는 어떠한 익명의 객체에서 ActionMode라는 어떠한 동작을 할때 이를 알리기 위해 이 함수를 실행 시켜줄 것이고 AppCompatActivity를 상속하는 특정 객체에서 이 ActionMode의 상태에 따른 동작이 필요할때 오버라이드 하여 사용할 수 있도록 만들어 놓은게 아닌가 싶습니다.

AppCompatActivity 하나만 보았을때는 아무 작업도 하지 않지만 AppCompatActivity 이후에 이를 상속하는 다른 클래스에서 이미 사용되고 있을 수도 있고 아니면 개발자가 따로 이를 필요로 할수도 있으니 그런 여지를 염두에 두고 해놓은것 같아요.
Development Guy (70,570 포인트) 님이 2017년 2월 15일 답변
+1 추천
현재 AppCompatActivity::onSupportActionModeStarted 구현은 아무것도 하지 않게 되어있으나, 앞으로도 그럴 거라는 보장은 없습니다.

그러니  javadoc에 나와있는대로 super를 호출해야 합니다.
익명사용자 님이 2017년 2월 15일 답변
...