我的问题是,创建内部类是否正确,因为我需要从这个类访问外部实例变量之一。但真正的问题是“将这个内部类也用作同一个外部类的实例变量是正确的吗?”。
在我的特定情况下,我有一个名为Exam
的外部类,并且应该关联一个结果,但结果(它将是String
或Double
)取决于{ {1}}(这是一个Exam实例变量)。
所以我不确定最佳做法是否:
ExamType
类,接收Result
ExamType
类,可以轻松访问Result
实例变量(特别是Exam
变量)并将其实例化为ExamType
的实例变量类。答案 0 :(得分:1)
我会选择选项1:在ExamType
的构造函数中传递Result
。
原因主要是可测试性:Result
仅依赖于显式传递给它的对象,它可以很容易地单独测试其功能。
另一个可能的原因是序列化:如果您只想序列化Result
对象,将其作为Exam
的内部类将强制Exam
与其序列化。这通常不是你想要的。
Result
是顶级课程还是static nested
课程取决于您,该决定取决于可读性。如果您的Result
类相对简单且Exam
也不复杂,请使用静态嵌套类,否则请使用单独的顶级类。