java - 嵌套对象最佳实践

标签 java object nested reference

引用嵌套对象的最佳做法是什么?

假设我有以下内容:

class Outer {
 private InnerA innerA;
 //getters and setters
}

class InnerA {
  private InnerB innerB;
  //getters and setters
}

class InnerB {
  private String someString;
  //getters and setters
}

在我的 Controller 或服务类中,我需要检查 InnerB 类的 someString 字符串变量以确保它不为 null 或不为空,所以我这样做:

if (getOuter().getInnerA().getInnerB().getSomeString() != null && !getOuter().getInnerA().getInnerB().getSomeString().equalsIgnoreCase("") {
  //do something
}

对我来说,这看起来很乱,如果嵌套对象本身为 null,则可能会出现问题。

我是否在父对象中为检查 null 的子对象创建 getter 和 setter?只是想知道最佳实践是什么和/或你们中的一些人在代码中做了什么?

最佳答案

如果这些对象中的任何一个可以为 null,那么当然,您必须在对该对象调用 getter 之前检查是否为 null。

但是这种链接是一种缺乏封装的难闻气味(贫血对象只有数据,没有行为)。你违反了 law of Demeter : 不要和陌生人说话。

关于java - 嵌套对象最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248691/

相关文章:

json - 如何访问嵌套 JSON 对象的多个值?

java - 在 Windows 上读取文件但在 Linux 容器上不读取?

java - Apache PDFBox : How can I specify the position of the texts I'm outputting

Java,由 : java. io.IOException : error=2, 引起 没有那个文件或目录

powershell - 在 PowerShell 中选择子属性

filter - 如何修改 OData 查询以添加访问过滤器?

java - 使用许多 AsyncTasks 会使我的 Android 应用程序运行得更快吗?

javascript - 显示在表单输入字段上的“object Object”变量

iphone - 如何从 NSUserDefaults 中取出字符串

mysql SELECT IN 后跟逗号分隔字段