Where Private Variables Can Be Shared Between Classes
I have used nested classes which accessed the private members of
top level classes for some time, and discovered that a top level class
can access the private members of nested classes. Recently, I
discovered that nested classes can access private member or other nested
classes. i.e. where the two classes are not nested, but share a top
level class.
Published at DZone with permission of Peter Lawrey, author and DZone MVB.Example
Perhaps private should be called "file local" c.f. package local. ;)public interface MyApp {
class Runner {
public static void main(String... args) {
// access a private member of another class
// in the same file, but not nested.
SomeEnum.VALUE1.value = "Hello World";
System.out.println(SomeEnum.VALUE1);
}
}
enum SomeEnum {
VALUE1("value1"),
VALUE2("value2"),
VALUE3("value3");
private String value;
SomeEnum(final String value) {
this.value = value;
}
public String toString() {
return value;
}
}
}
From http://vanillajava.blogspot.com/2012/02/outer-class-local-access.html
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)
Tags:






Comments
Wojciech Kudla replied on Wed, 2012/03/07 - 3:22pm
Peter Lawrey replied on Fri, 2012/12/21 - 4:34pm
in response to:
Wojciech Kudla
There is some magic, given that the JVM doesn't support accessing private member from another class, nested or otherwise. The compiler creates accessor methods to implement this functionality.