有必要创建一个内部类,使用它作为外部类的实例变量吗?

时间:2014-09-04 08:57:22

标签: java inner-classes

我的问题是,创建内部类是否正确,因为我需要从这个类访问外部实例变量之一。但真正的问题是“将这个内部类也用作同一个外部类的实例变量是正确的吗?”。

在我的特定情况下,我有一个名为Exam的外部类,并且应该关联一个结果,但结果(它将是StringDouble)取决于{ {1}}(这是一个Exam实例变量)。

所以我不确定最佳做法是否:

  • 创建一个孤立的ExamType类,接收Result
  • 作为构造函数输入
  • 创建一个内部ExamType类,可以轻松访问Result实例变量(特别是Exam变量)并将其实例化为ExamType的实例变量类。

1 个答案:

答案 0 :(得分:1)

我会选择选项1:在ExamType的构造函数中传递Result

原因主要是可测试性:Result仅依赖于显式传递给它的对象,它可以很容易地单独测试其功能。

另一个可能的原因是序列化:如果您只想序列化Result对象,将其作为Exam的内部类将强制Exam与其序列化。这通常不是你想要的。

Result是顶级课程还是static nested课程取决于您,该决定取决于可读性。如果您的Result类相对简单且Exam也不复杂,请使用静态嵌套类,否则请使用单独的顶级类。