アイデアが1つありました。これは、(実際のプロジェクトで)いくつかのピースのプログラミングを快適に促進するかもしれません。
しかし、これが機能するかどうかは知りませんでした。 その結果、推測をテストするために少しテストを投げました。
このテストを書いた後、私はこの例が非常に興味深く有益な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()と呼ばれる