2017-02-07 11 views
0

私はクラスのインスタンスを作成し、そのインスタンスのメソッドを呼び出す次のシナリオで作業しています。それは私にstackOverFlowエラーを与えます。私のコード:これはStackOverflowExceptionすべてのtestがラインどれが意志、再びコードの同じ行を呼び出す新しいtestを作成します インスタンスを介してメソッドを呼び出すとstackOverFlowエラーがスローされます

test t = new test() 
を持っているので...あなたをスロー

public class test { 
    test t = new test(); 
    public void show(){ 
    System.out.println("df"); 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    test t = new test(); 
    t.show(); 
} 
+3

'test'のすべてのインスタンスは、初期化時に' test'の新しいインスタンスを作成します。 – shmosel

答えて

1

これがどのように無限の呼び出し連鎖を作り出すかを見ることができます。

その行を削除するだけです。メインメソッドの中に新しいtestを既に作成しているので、あなたが望むことをしたとしてもそれは必要ではありません。

-3

なぜクラス内にそのクラスの新しいインスタンスを作成するのですか?テストを削除するt =新しいテスト(); Testクラスの内側とあなたがクラスtesttestインスタンスをインスタンスに悪い再帰呼び出しを持って再び

+0

これはコメントでなければなりません。 [回答]をお読みください。 –

+0

私は電話をかけているので、自分の投稿にコメントを追加するボタンが表示されません。私はコメントしたかったが、ボタンを見つけられなかった。 Stack Exchangeアプリを使用しています –

+0

まだコメントを追加するために必要な評判はありません。あなたがシステムを乱用し、回答をコメントとして投稿すると、必要な担当者の達成が遅れるだけです。答えとしてStackOverflowがなぜ発生したのか説明してもいいかもしれませんが、他の誰かがすでに行っています。 –

1

を試してみてください。ヒープスペースがなくなるまで、新しいインスタンスをインスタンス化し続けます。 StackOverflowErrorがあるときは、コード内のどこにいても繰り返し呼び出されるかどうかをチェックする必要があります。

関連する問題