2017-07-29 8 views
2

誰でもこのことが分かりますか?タスクは、このコードを動作させるために最小限の静的キーワードを追加することでした。メソッド1とメソッド2で静的なことは理解できますが、なぜそれをintステップに追加するのですか?このコードはなぜ機能するのですか?静的キーワードを追加するタスク

/* Minimum number of static keywords 
Add the minimum number of static keywords to make the code compile and the program to successfully complete. 
*/ 

public class Solution { 
    public static int step; //static was added here 

    public static void main(String[] args) { 
     method1(); 
    } 

    public static void method1() { //static was added here 
     method2(); 
    } 


    public static void method2() { //static was added here 
     new Solution().method3(); 
    } 

    public void method3() { 
     method4(); 
    } 

    public void method4() { 
     step++; 
     for (StackTraceElement element : Thread.currentThread().getStackTrace()) 
      System.out.println(element); 
     if (step > 1) return; 
     main(null); 
    } 
} 
+3

どのような恐ろしいコードの例ですか?誰があなたにこれを犯しましたか? –

+0

*コンパイルする必要はありませんが、終了させるには必要ですが、T.J. Crowderは言った、これはまったく恐ろしいことです。 –

+0

ひどい理由は? Javaトレーニングコースからのいくつかのタスクです – genek

答えて

2

stepが静的​​でない場合、それはmethod2で作成されたオブジェクトに固有になるだろう、といつも、0時から始めるとずつインクリメントされた後の1になり、1 > 1がfalseになるので私たちはmainに再度電話する前に戻りません。したがって、プログラムは無限に繰り返されます(スタックがオーバーフローするまで無限に終わります)。

関連する問題