Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4309026

javac disallows access from different pkg to members of protected inner classes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • None
    • 1.2.2
    • tools
    • generic
    • solaris_8

      The javac compiler incorrectly disallows access to members of protected
      inner classes from classes belonging to a different package.

      Consider the following two source files:

      ----------------
      package a;

      public class A {
          protected class In {
      public void method() {
      System.out.println("A.In.method called");
      }
          }
      }
      ----------------
      import a.*;

      public class B extends A {
          private class B_In extends A.In {
      public void method() {
      System.out.println("about to call super.method");
      super.method();
      }
          }

          public void callMethod() {
      B_In bin = new B_In();
      bin.method();
          }

          public static void main(String[] args) {
      B b = new B();
      b.callMethod();
          }
      }
      ----------------

      Compiling these two files induces the following error message:

      . javac a/A.java B.java
      B.java:7: The type a.A.In to which the member method belongs is not
          accessible from inner class B. B_In.
      super.method();
      ^
      1 error
      .

      Putting both files into the same package eliminates the problem.

      I discovered this problem by trying to subclass
      javax.swing.JTabbedPane.ModelListener as discussed in the comment preceding its
      definition:
          /**
           * Subclasses that want to handle ChangeEvents differently
           * can override this to return a subclass of ModelListener or
           * another ChangeListener implementation.
           */
      So the problem has practical impact.

            iris Iris Clark
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: