interface - Java中接口不能被实例化,那么如下的代码怎么理解?
PHP中文网
PHP中文网 2017-04-17 17:53:33
0
4
401
    public static final Function<String, Set<String>> MAPPING_FUNCTION = new Function<String, Set<String>>() {
            @Override
            public Set<String> apply(String s) {
                return new HashSet<>();
            }
        };

MAPPING_FUNCTION已经是接口Function<String, Set<String>>的一个实例了啊?

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(4)
Peter_Zhu

이것은 인터페이스의 인스턴스가 아니라 인터페이스를 구현하는 익명 내부 클래스의 인스턴스입니다.
뒤에 교정장치가 있는 걸 못 보셨나요? 우리가 흔히 사용하는 A a=new A() 형태와는 확실히 다릅니다.
내부 수업 관련 지식을 읽어보시길 권장합니다.

黄舟

이것은 익명 내부 클래스를 작성하는 방법입니다. 실제로 이러한 작성 방법은 새 클래스를 작성한 다음 인터페이스를 구현하는 것과 같습니다.
문제는 단지 인터페이스의 메소드를 구현하기 위해 새 클래스를 생성하는 것이 너무 까다로워서 대부분의 작성 메소드가 익명의 내부 클래스를 직접 작성한다는 것입니다.

우리는 클래스 이름에 신경을 쓰지 않기 때문에 구체적인 구현에만 주의를 기울입니다. 이는 익명 내부 클래스의 일반적인 사용 시나리오이기도 합니다.

Ty80

'미친 자바 강의노트' 6장에 자세한 설명이 나와 있습니다. 책을 읽기 싫으시면 '익명 내부 클래스'를 검색해 보세요

刘奇

익명 내부 클래스는 이 인터페이스를 구현하는 클래스와 동일합니다. 선언과 구현을 함께 작성하면 됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!