ただのOverrideです。
さっき書いた↓のコードはProxyで「動的」に処理を変えてますが、こっちは「静的」になっただけです。
Java でもa == 1 && a == 2 && a == 3でtrueって出力させたい(黒魔術ってほどでもないグレーな魔術編) - Qiita
public class JudgeImpl2 {
public static void main(String... args) throws Exception {
{
System.out.println("まずは普通に実行すると・・・");
JudgeImpl2 judge = new JudgeImpl2();
test(judge);
}
{
System.out.println("上書きすると・・・");
JudgeImpl2 judge = new JudgeImpl2() {
@Override
public boolean judge(int a ) {
return true;
}
};
test(judge);
}
}
private static void test(JudgeImpl2 judge){
System.out.println( judge.judge(1) );
System.out.println( judge.judge(2) );
System.out.println( judge.judge(3) );
}
public boolean judge(int a) {
if (a == 1 && a == 2 && a == 3) {
return true;
} else {
return false;
}
}
}
実行結果
まずは普通に実行すると・・・
false
false
false
上書きすると・・・
true
true
true