A protected inner class is inaccessible from another package. The following
example demonstrates the problem.
-----
package p1;
public class ProtectedInnerClass1 {
protected class Foo {
public String getBar() { return "bar"; }
}
}
-----
package p2;
public class ProtectedInnerClass2 extends p1.ProtectedInnerClass1
{
/* ProtectedInnerClass2.java:4: Can't access inner class p1.ProtectedInnerClass1.Foo.
* Only public classes and interfaces in other packages can be accessed.
* protected class Bug extends Foo {
* ^
*/
class Bug extends Foo {
String getBug() { return getBar(); }
}
}
example demonstrates the problem.
-----
package p1;
public class ProtectedInnerClass1 {
protected class Foo {
public String getBar() { return "bar"; }
}
}
-----
package p2;
public class ProtectedInnerClass2 extends p1.ProtectedInnerClass1
{
/* ProtectedInnerClass2.java:4: Can't access inner class p1.ProtectedInnerClass1.Foo.
* Only public classes and interfaces in other packages can be accessed.
* protected class Bug extends Foo {
* ^
*/
class Bug extends Foo {
String getBug() { return getBar(); }
}
}
- duplicates
-
JDK-4087314 Protected inner classes are wrongly rejected in 'extends' clauses
-
- Closed
-