しかし、これが機能するかどうかは知りませんでした。 その結果、推測をテストするために少しテストを投げました。
このテストを書いた後、私はこの例が非常に興味深く有益なjavaタスクになり得ることを発見しました。
問題は次のとおりです。
パブリッククラスA { private static staticInstance; パブリックA(){ staticInstance = this; } public void f(){ System.out.println( "Af()called"); } 静的クラスBはAを拡張します{ パブリックB(){ スーパー(); 新しいRuntimeException()をスローします。 } public void f(){ System.out.println( "Bf()called"); } } public static void main(String [] args){ { new B(); } catch(Throwable t){ / *何もしない* / } if(staticInstance == null){ System.out.println( "staticInstance is null"); } else { staticInstance.f(); } } }
質問-このプログラムを実行すると、コンソールに何が発行されますか?
- staticInstanceはnullです
- Af()と呼ばれる
- Bf()と呼ばれる