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