java - 有必要创建一个内部类,将其用作外部类的实例变量吗?

标签 java inner-classes

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

在我的具体情况下,我有一个名为 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/

相关文章:

java - Java 中扭曲的内部类

java - 匹配流文件签名

java - Vert.x如何在lambda函数中添加类型参数到promise

java - Java GC运行导致OS上的内存使用增加

java - 单例模式可以被内部类破坏吗?

c# - 将对象序列化为 XML 文件会引发异常

Android - WallpaperService 为什么我的引擎必须是内部类?

java - 最终和有效最终之间的区别

java - 使用 Java 的异步驱动程序时,并非所有文档都插入到 MongoDB 中

Java Hibernate将对象保存在一个数据库中的不同模式中