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>>的一个实例了啊?
天蓬老师2017-04-17 17:55:33
이것은 인터페이스의 인스턴스가 아니라 인터페이스를 구현하는 익명 내부 클래스의 인스턴스입니다.
뒤에 교정장치가 있는 걸 못 보셨나요? 우리가 흔히 사용하는 A a=new A()
형태와는 확실히 다릅니다.
내부 수업 관련 지식을 읽어보시길 권장합니다.
黄舟2017-04-17 17:55:33
이것은 익명 내부 클래스를 작성하는 방법입니다. 실제로 이러한 작성 방법은 새 클래스를 작성한 다음 인터페이스를 구현하는 것과 같습니다.
문제는 단지 인터페이스의 메소드를 구현하기 위해 새 클래스를 생성하는 것이 너무 까다로워서 대부분의 작성 메소드가 익명의 내부 클래스를 직접 작성한다는 것입니다.
우리는 클래스 이름에 신경을 쓰지 않기 때문에 구체적인 구현에만 주의를 기울입니다. 이는 익명 내부 클래스의 일반적인 사용 시나리오이기도 합니다.