From: Ito Kazumitsu <[EMAIL PROTECTED]> Date: Sat, 10 Dec 2005 11:18:13 +0900 (JST)
> public class TestPrivateClass { > private static class Test0001 { > } > > public static void main(String[] args) { > try { > Object obj = Test0001.class.newInstance(); > } > catch (Exception e) { > e.printStackTrace(); > } > } > } > > This ends normally when run on Kaffe, but when run on Sun's JDK, > > java.lang.IllegalAccessException: Class TestPrivateClass can not access a > member of class TestPrivateClass$Test0001 with modifiers "private" According to "8.8.9 Default Constructor" in The Java Language Specification, if the class is declared private, then the default constructor is implicitly given the access modifier private. So IllegalAccessException should be thrown. The next test case will illustrate this problem more clearly. $ cat A.java public class A { public static void main(String[] args) { try { B.getPrivateClass().newInstance(); } catch (Exception e) { e.printStackTrace(); } } } $ cat B.java public class B { private static class PrivateClass {} public static Class getPrivateClass() { return PrivateClass.class; } } In this case, Sun's JDK throws IllegalAccessException as expected. But Kaffe does not. _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe