タスクが生まれました

アイデアが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();
         }
     }
 }


質問-このプログラムを実行すると、コンソールに何が発行されますか?

  1. staticInstanceはnullです
  2. Af()と呼ばれる
  3. Bf()と呼ばれる



All Articles