On Feb 20, 2008 10:47 AM, Dave <[EMAIL PROTECTED]> wrote:
> class Foo {
>
> private static int;
>
> static {
> a = 100;
> }
>
> Foo() {
>
> }
>
> }
>
> Class.forName("package.Foo").newInstance();
>
> The static init block of Foo is not called.
>
> I am using Java 1.5 update14. It is a bug?
FWIW, appears to work here under 1.6 (Linux) and 1.4.2 (Solaris):
[EMAIL PROTECTED]:~/tmp/jstatic$ java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
[EMAIL PROTECTED]:~/tmp/jstatic$ cat test.java
public class test {
public static void main(String [] args)
throws Exception {
Object o = Class.forName("foo").newInstance() ;
}
}
[EMAIL PROTECTED]:~/tmp/jstatic$ cat foo.java
public class foo {
private static int a ;
static {
a = 100 ;
System.out.println("a set to " + a) ;
}
foo() {
}
}
[EMAIL PROTECTED]:~/tmp/jstatic$ javac test.java
[EMAIL PROTECTED]:~/tmp/jstatic$ javac foo.java
[EMAIL PROTECTED]:~/tmp/jstatic$ java -classpath "." test
a set to 100
And under 1.4.2:
[EMAIL PROTECTED]:~/tmp/jstatic$ java -version
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)
[EMAIL PROTECTED]:~/tmp/jstatic$ javac test.java
[EMAIL PROTECTED]:~/tmp/jstatic$ javac foo.java
[EMAIL PROTECTED]:~/tmp/jstatic$ java -classpath "." test
a set to 100
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]