Search code examples
javaobjectnestedreference

Nested Objects Best Practice


What is the best practice for referencing nested objects?

Let's say I have the following:

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

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

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

and in my controller or service class I need to check the someString String variable of the InnerB class to make sure it is not null or not empty so I do this:

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

To me this looks messy and could have issues if the nested objects themselves are null.

Do I need to create getters and setters in the parent objects for the child objects checking for null? Just wondering what the best practice is if any and/or what some of you do in your code?


Solution

  • If any of those objects can be null, then you have to check for null before calling a getter on this object, of course.

    But this kind of chaining is a bad smell of a lack of encapsulation (anemic objects having just data, and no behavior). You're violating the law of Demeter : don't talk to strangers.