私有方法或内部类,使用哪一个

时间:2013-08-27 18:57:59

标签: java inner-classes

如果我有以下课程

    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来实现,这只能在类本身中访问。

1 个答案:

答案 0 :(得分:4)

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

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

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

编辑:每个示例,按要求

  • 接口可能由内部类实现以实现Iterator模式,或者是Runnable,...
  • 内部类的多个实例可能是实现迭代器所必需的,或者是内部映射的特殊键类型,...
  • 策略模式可能需要多个类型的内部类,...