>  Q&A  >  본문

interface - Java中接口不能被实例化,那么如下的代码怎么理解?

    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中文网2741일 전407

모든 응답(4)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-17 17:55:33

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

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 17:55:33

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

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:55:33

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

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:55:33

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

    회신하다
    0
  • 취소회신하다