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

실행중 API Level 체크해서 deprecated 된 메서드의 호출에 관한 질문

0 추천

안드로이드 앱 개발에서 볼 수 있는 코드인데
자바 문법과 연관된 질문이라 이 게시판에 남겨봅니다
질문이 좀 정확치 않는데, 양해 부탁드립니다 ㅜ.ㅜ

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    // Android OS Version 4.1 이상에서 동작할 내용
} else {
    // Android OS Version 4.1 미만의 OS에서 동작할 내용
}

안드로이드 api 레벨을 체크해서 분기해서 서로 다른 코드를 실행하도록 하는 코드인데요
특정 api 레벨을 기준으로
deprecated가 되기전 메서드 호출과
deprecated되고 새롭게 추가된 메서드를 호출하는 코드로의 분기입니다

궁금한것은
원래 컴파일 시점에서는 클래스에 존재하지 않는 메서드의 호출 구문이 있으면 컴파일 시점에 에러가 발생하는데
저렇게 동적으로 실행중인 상태에서 버전을 체크해서 서로 다른 메서드를 호출하여 동작하게 하려면
필연적으로 컴파일 시점에서는 특정 API 레벨에서 지원하던 지원하지 않던 모든 버전의 메서드를 제공해야하는것이 아닌가요?

어떤 분은 그게 아니라 자바에서 실행중에 메서드의 호출은 동적 바인딩 되는것으로
물리적으로 존재하지 않는 메서드의 호출은 예외를 발생하는 식으로 디자인 되었다고 하던데
그래서 임의적으로 존재하지 않는 메서드의 호출이 있더라도 컴파일은 무사히 되도록 넘겼을꺼라고 해요

어느쪽이 맞는 것일까요?

생각꿈들 (390 포인트) 님이 2017년 4월 23일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...