java - 如何实现内部类?

标签 java inner-classes

我在那里,

我有这种情况:

public class A{
  //attributes and methods
}

public class B{
  //attributes and methods

}

public class C{
  private B b;
  //other attributes and methods
}

public class D{
  private C c1, c2, c3;
  private List<A> a;
  //other attributes and methods
}

每个类(class)都有自己的文件。但是,我想将类 A、B 和 C 作为类 D 的内部类,因为我没有在整个程序中使用它们,只是在其中的一小部分。我应该如何实现它们?我读过它,但我仍然不确定什么是最好的选择:

方案一,使用静态类:

public class D{
  static class A{
    //attributes and methods
  }

  static class B{
    //attributes and methods
  }

  static class C{
    private B b;
    //other attributes and methods
  }

  private C c1, c2, c3;
  private List<A> a;
  //other attributes and methods
}

选项 2,使用一个接口(interface)和一个实现它的类。

public interface D{
  class A{
    //attributes and methods
  }

  class B{
    //attributes and methods
  }

  class C{
    private B b;
    //other attributes and methods
  }

}

public class Dimpl implements D{
  private C c1, c2, c3;
  private List<A> a;
  //other attributes and methods
}

我想知道哪种方法更好,以便使用原始场景获得相同的行为。如果我使用选项 1 并使用这样的类可以吗?

public method(){
  List<D.A> list_A = new ArrayList<D.A>();
  D.B obj_B = new D.B();
  D.C obj_C1 = new D.C(obj_B);
  D.C obj_C2 = new D.C(obj_B);
  D.C obj_C3 = new D.C(obj_B);

  D obj_D = new D(obj_C1, obj_C2, obj_C3, list_A);
}

基本上,我关心的是内部类的创建将如何影响外部类。在原始场景中,我首先创建类 A、B 和 C 的实例,然后创建类 D 的实例。我可以用我提到的选项做同样的事情吗?

最佳答案

如果您只打算在类中使用它们,则没有理由使用接口(interface),因为接口(interface)旨在供 public 访问。使用您的第一种方法(并使类私有(private)静态)

关于java - 如何实现内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623449/

相关文章:

java - 使用泛型转换为内部类

安卓 :get an object from an inner class

java - Scala 闭包与 Java 内部类的比较 -> final VS var

java - 获取数组的正确索引值

java - 如果将来的任务抛出异常,线程是否返回到执行器服务的线程池?

java - 在 SWT 组合中禁用 MouseWheel

java - 循环中的 PathTransition

java - java中的空匿名内部类

java - 从 XML 文件读取 Java 中的 RSAPublicKey

java - Android 测试 - Robolectric + Mockito + Retrofit 出现 Wanted 但未调用错误