代码之家  ›  专栏  ›  技术社区  ›  Tom Tresansky

什么时候应该在Java中使用本地类?

  •  22
  • Tom Tresansky  · 技术社区  · 14 年前

    public final class LocalClassTest
    {
      public static void main(final String[] args) {
        for(int i = 10; i > 0; i--) {
          // Local class definition--declaring a new class local to the for-loop
          class DecrementingCounter {
            private int m_countFrom;
    
            public DecrementingCounter(final int p_countFrom) {
              m_countFrom = p_countFrom;
            }
    
            public void count() {
              for (int c = m_countFrom; c > 0; c--) {
                System.out.print(c + " ");
              }
              System.out.println();
            }
          }
    
          // Use the local class
          DecrementingCounter dc = new DecrementingCounter(i);
          dc.count();
        }
      }
    }
    

    Advantages of Local Classes 其中列出了本地类相对于匿名内部类的一些巨大优势。

    当局部类比内部类更可取时,有什么例子可以说明,内部类不涉及超复杂的方法(应该避免)?

    1 回复  |  直到 7 年前
        1
  •  13
  •   Malcolm    14 年前

    局部类是某些特定方法中使用的东西,而不是其他方法。

    让我举一个例子,我在我的JPEG解码器/编码器中使用了一个本地类,当我从文件中读取将决定进一步解码过程的配置时。它看起来像这样:

    class DecodeConfig {
        int compId;
        int dcTableId;
        int acTableId;
    }
    

    基本上只有三个 int

    我可以用一个内部类来实现这一点,但是所有的解码过程都在一个方法中处理,我不需要在其他任何地方使用配置。这就是为什么本地类就足够了。

    当然,这是最基本的例子,但它来自现实生活。