为简单的功能创建内部类是一种好习惯吗?

Ste*_*ote 7 java inner-classes

对于简单的内部类有一些不同的看法,所以我想知道对什么是好的以及何时使用私有内部类有一个普遍的共识.

这是我发现的一个例子,我认为没有必要创建一个内部类.这有多好/坏?

private static class InternalCounter {
  int count;

  public InternalTabManager() {
    count = 0;
  }

  public int increment() {
    return count++;
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在这种特殊情况下,一个实例保留在周围的类中以跟踪计数.

Sac*_*nth 9

是的,在这种情况下它似乎是非常不必要的,但如果你有一个案例,其中有一些重要的功能,你知道没有其他类将需要你的内部类,没有必要创建一个更全局可用的类,然后使用一个内在的阶级.


sur*_*fen 5

这取决于具体情况.如果这个类只能用一个静态int替换,那么我认为不需要创建一个内部类.

另一方面,这段代码允许父类对象共享对mutable int的引用(使用java.lang.Integer是不可能的,因为它是不可变的).

在这种情况下,一般建议/实践/模式是保持简单,你不需要它 - 如果你不需要特定的行为,不要让你的代码比绝对必要的更复杂.

所以,如果问题是:"为简单的功能创建一个内部类是好的做法,当它可以用一种更简单的方式解决"时,答案是否定的.