default 방법(defender 방법)

자바 의 인 터 페 이 스 는 1.8 이전에 방법 명 만 정의 할 수 있 을 뿐 방법의 구체 적 인 코드 는 포함 할 수 없다.
단,완 료 된 코드 프로젝트 를 고려 하여 인 터 페 이 스 를 확장/수정 하려 면 자바 8 Collections API 를 강화 하여 lambda 표현 식 을 지원 하 게 할 때 손 을 쓸 수 없습니다.따라서 default,defender 또는 가상 확장 방법(Virtual extension methods)이 라 고 새로운 개념 을 도입 했다.
default 방법 은 인터페이스 내부 에 기본 적 인 방법 을 포함 하여 실현 하 는 것 을 말한다.(즉,인터페이스 에 방법 체 를 포함 할 수 있다.이것 은 자바 이전 버 전에 서 인터페이스 에 대한 문법 제한 을 깨 뜨 렸 다)인 터 페 이 스 를 확장 할 때 인터페이스 와 관련 된 실제 코드 를 파괴 하지 않 는 다.
예 를 들 어 자바 소스 코드 의 Iterable 인터페이스 에 있 는 foreach 방법 및 spliterator 방법
default void forEach(Consumer super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
default Spliterator spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }

하나의 특별한 상황:만약 에 하나의 클래스 가 두 개의 인 터 페 이 스 를 실현 한다 면 이 두 인 터 페 이 스 는 하나의 이름 이 같은 default 방법 을 동시에 포함 하고 있 습 니 다.이때 충돌 할 수 있 습 니 다.컴 파일 러 는 어떤 방법 으로 호출 되 었 는 지 식별 할 수 없습니다.

좋은 웹페이지 즐겨찾기