私は、Javaを学習し、最近では正常に動作している次のコードに出会いましたが、なぜ私は理解していないよ:Javaの内部インタフェース
public class ExecutionChain<Result> {
Parametriezed1<Result> classMethod1() {
return this::method1;
}
Parametriezed2<Result> method1() {
return this::method2;
}
Result method2(Result result) {
return result;
}
interface Parametriezed1<Result> {
Parametriezed2 method1();
}
interface Parametriezed2<Result> {
Result method2(Result result);
}
}
誰かが説明してくださいでした:
method1
が、事実にもかかわらず、this::method1
を呼び出すためにOKである理由Parametriezed1
- を実装
ExecutionChain
ずにParametriezed2 method1()
をオーバーライドしているように見える理由method1
もmethod2
も返さないParametriezed1
タイプですか?
ここで使用されていた原則については、いくつかのドキュメントに感謝しています。
* FYI:*そのコードは**悪い**です。 'Parametriezed1'の' method1() 'の戻り型は** raw ** genericを返しています。 *非常に悪い!* – Andreas