Bug accessing variable in superclass from inner class of subclass.

Mark J. Roberts mjr@statesmean.com
Thu Feb 22 08:28:00 GMT 2001


I haven't seen this in GNATS, so I'll report it once again, as it seems
my post in mid-January was overlooked (or perhaps the problem is simply
difficult to solve). I apologize if this is already known.
This problem does not occur of Super and Inner are not inner classes of
Test.
// When id is a member of Inner's superclass, and Inner2 tries to access
// it, it is munged to 0.
public class Test {
 public static void main(String[] args) {
 Test t = new Test();
 }
 public Test() {
 (new Inner()).doit();
 }
 public class Super {
 public int id = 42;
 }
 public class Inner extends Super {
 public void doit() {
 System.out.println("works here: "+id);
 (new Inner2()).doit();
 }
 public class Inner2 {
 public void doit() {
 System.out.println("but not here: "+id);
 }
 }
 }
}
mjr::mjr$ javac Test.java ; java -cp . Test
works here: 42
but not here: 42
mjr::mjr$ gcj --main=Test -o test Test.java ; ./test
works here: 42
but not here: 0
mjr::mjr$
-- 
Mark Roberts
mjr@statesmean.com


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /