次のスニペットのコードはをスローしjava.lang.StackOverflowError
ます。
public class Main
{
private Main m=new Main(""); //This statement causes the exception.
private Main(String s)
{
System.out.println(s);
}
public static void main(String[] args)
{
try
{
Main m1=new Main("The constructor called.");
System.out.println("Successful!");
}
catch (Exception ex)
{
System.out.println(ex);
}
}
}
このステートメントprivate Main m=new Main("");
をクラス自体の中に意図的に記述する意味はありませんが、そのステートメントがクラス内のどのコードによっても使用されることは想定されていません。そのステートメントで例外がスローされるのはどうしてですか。