Java Inner Class Access and Best Practices

前端 未结 1 1238
忘了有多久
忘了有多久 2021-01-04 04:27

I know that an inner class has access to everything in the outer class (because it\'s a member of that class) but what about the other way around?

  1. Does the

相关标签:
1条回答
  • 2021-01-04 04:56

    This topic is covered in some detail by Effective Java (2nd edition) Item 22: "Favor static member classes over nonstatic".

    A brief summary:

    1. An inner class should not have access to an outer class instance, unless that access is required, i.e. inner classes should be static by default. To get technical, Effective Java calls these static member classes, as opposed to inner classes, and uses the term nested class to encompass both the static and nonstatic versions.
    2. An outer class always has access to the members of its inner classes, even when those members are private. In this way, an inner class can expose itself only to its outer class.
    3. "An inner class should exist only to serve its outer class."

    Personally, I'm inclined to implement an inner class whenever doing so allows the inner class's constructors to be private, i.e. when a class can only be instantiated from one other (outer) class. Any additional encapsulation, such as making the entire inner class private, is desirable; but public inner classes are perfectly acceptable. There are many examples in Java, such as AbstractMap.SimpleEntry.

    0 讨论(0)
提交回复
热议问题