1

如果我有以下课程

    public class Foo {
       public void bar(){
           fooBar();
       }
       private void fooBar(){
           System.out.println("text...");
       }
    }

相反,我也可以做类似的事情

    public class Foo {

        public void bar() {
             new inner().fooBar();
        }

        private class inner {
             private void fooBar() {
                   System.out.println(" text ...");
             }
        }

    } 

我什么时候应该使用内部类而不是私有方法?如果功能是特定于的,class Foo那么使用内部类是有意义的,但同样可以通过private method它只能在类本身内访问。

4

1 回答 1

4

对于您的示例,您不需要内部类。您的第一个解决方案简单、易读且足够。

内部类在以下情况下很有用:

  • 您需要实现一个接口,但不希望外部类实现它。
  • 该类可以有多个实例
  • 内部类可以有不止一种类型

编辑:每个示例,应要求提供

  • 一个接口可能由一个内部类实现以实现迭代器模式,或者一个可运行的,...
  • 实现迭代器或内部映射的特殊键类型可能需要内部类的多个实例,...
  • 策略模式可能需要多种类型的内部类,...
于 2013-08-27T19:03:53.593 回答