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讲师
これはインターフェースのインスタンスではなく、インターフェースを実装する匿名内部クラスのインスタンスです。 その後の中括弧に気づきませんでしたか?私たちが普段使っているA a=new A()の形式とは明らかに違います。 内部クラスに関する関連知識を読むことをお勧めします。
A a=new A()
これは、匿名の内部クラスを作成する方法です。実際、この作成方法は、新しいクラスを作成してインターフェイスを実装することと同じです。 問題は、インターフェイスのメソッドを実装するためだけに新しいクラスを作成するのは面倒すぎるため、ほとんどのメソッド作成では匿名の内部クラスを直接作成することになります。
クラスの名前には注意を払わないので、その特定の実装のみに注意を払います。これは、匿名内部クラスの一般的な使用シナリオでもあります。
「Crazy Java 講義ノート」の第 6 章に詳しい説明があります。本を読みたくない場合は、「匿名内部クラス」で検索してください。
匿名内部クラスは、このインターフェースを実装するクラスと同等です。宣言と実装を一緒に書くだけです。
これはインターフェースのインスタンスではなく、インターフェースを実装する匿名内部クラスのインスタンスです。
その後の中括弧に気づきませんでしたか?私たちが普段使っている
A a=new A()
の形式とは明らかに違います。内部クラスに関する関連知識を読むことをお勧めします。
これは、匿名の内部クラスを作成する方法です。実際、この作成方法は、新しいクラスを作成してインターフェイスを実装することと同じです。
問題は、インターフェイスのメソッドを実装するためだけに新しいクラスを作成するのは面倒すぎるため、ほとんどのメソッド作成では匿名の内部クラスを直接作成することになります。
クラスの名前には注意を払わないので、その特定の実装のみに注意を払います。これは、匿名内部クラスの一般的な使用シナリオでもあります。
「Crazy Java 講義ノート」の第 6 章に詳しい説明があります。本を読みたくない場合は、「匿名内部クラス」で検索してください。
匿名内部クラスは、このインターフェースを実装するクラスと同等です。宣言と実装を一緒に書くだけです。