Re: Non static block and constructor
asit wrote:
yesterday I read ab [sic] Non Static [sic] block.
"ab"?
I tried the following code
public class NonSta
{
int i;
NonSta()
{
System.out.println("Constructor");
i++;
System.out.println(i);
}
{
System.out.println("Non Static Block");
i += 10;
System.out.println(i);
add(100);
new NonSta();
}
void add(int k)
{
System.out.println("Add Block");
i += k;
System.out.println(i);
}
public static void main(String args[])
{
NonSta n = new NonSta();
}
}
I found that it becomes an infinite loop if the non static [sic] block
contains a call to constructor.
It's not a loop.
Does it logically imply "Non static block [sic] can't contain a
constructor".
It should be obvious that a constructor cannot contain a constructor for
objects of the same class.
Arne Vajh??j wrote:
It seems obvious to me that it should not work well.
The static initializer should start and complete before
any instances of the class is created.
It's a *non*-static initializer.
Calling a constructor inside a constructor is bound to fail. How can it ever
conclude?
asit, the non-static initializer block is part of the constructor. The
constructor tries to construct another object of the type that it's
constructing. That object tries to construct yet another object in its
constructor. And so on, /ad infinitum/. No constructor can ever finish.
I'm sure if you think about it you'll figure out why this cannot succeed.
--
Lew