OUTPUT: ==== using isNullOrEmpty ==== Convict: Joe Jacobs Alises : [Joey, Nails] Crimes : [Major, Minor] Convict: Moe Mandy Alises : No known alises Crimes : [Major] Convict: Unknown Alises : [Larry] Crimes : [Minor] ==== using getDefaultIfNull ==== Convict: Joe Jacobs Alises : [Joey, Nails] Crimes : [Major, Minor] Convict: Moe Mandy Alises : No known alises Crimes : [Major] Convict: Unknown Alises : [Larry] Crimes : [Minor] CODE: package deleteme; import java.util.Arrays; import java.util.Collection; import java.util.List; public class DeleteMe { public static void main(String[] args) { showExample(); } private static class Crime { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return getName(); } } private static class Convict { private String name; private List alises; private List crimes; public String getName() { return name; } public void setName(String name) { this.name = name; } public List getAlises() { return alises; } public void setAlises(List alises) { this.alises = alises; } public List getCrimes() { return crimes; } public void setCrimes(List crimes) { this.crimes = crimes; } } public static void showExample() { Crime minor = new Crime(); minor.setName("Minor"); Crime major = new Crime(); major.setName("Major"); Convict joe = new Convict(); joe.setName("Joe Jacobs"); joe.setAlises(Arrays.asList(new String[]{"Joey", "Nails"})); joe.setCrimes(Arrays.asList(new Crime[]{major, minor})); Convict moe = new Convict(); moe.setName("Moe Mandy"); moe.setCrimes(Arrays.asList(new Crime[]{major})); Convict larry = new Convict(); larry.setAlises(Arrays.asList(new String[]{"Larry"})); larry.setCrimes(Arrays.asList(new Crime[]{minor})); List convicts = Arrays.asList(new Convict[]{joe, moe, larry}); //using only the isNullOrEmpty System.out.println("==== using isNullOrEmpty ===="); for (Convict convict : convicts) { System.out.printf("Convict: %s%n", isNullOrEmpty(convict.getName()) ? "Unknown" : convict.getName()); System.out.printf("Alises : %s%n", isNullOrEmpty(convict.getAlises()) ? "No known alises" : convict.getAlises()); System.out.printf("Crimes : %s%n%n", isNullOrEmpty(convict.getCrimes()) ? "No known crimes" : convict.getCrimes()); } //using the conveninece method for get default if null System.out.println("==== using getDefaultIfNull ===="); for (Convict convict : convicts) { System.out.printf("Convict: %s%n", getDefaultIfNull(convict.getName(), "Unknown")); System.out.printf("Alises : %s%n", getDefaultIfNull(convict.getAlises(), "No known alises")); System.out.printf("Crimes : %s%n%n", getDefaultIfNull(convict.getCrimes(), "No known crimes")); } } public static Object getDefaultIfNull(Object o, Object ifNullUseThis) { return (isNullOrEmpty(o) ? ifNullUseThis : o); } public static boolean isNullOrEmpty(Object o) { boolean isNullOrEmpty = true; if (o != null) { if (String.class.isAssignableFrom(o.getClass())) { isNullOrEmpty = ((String) o).isEmpty(); } else if (Collection.class.isAssignableFrom(o.getClass())) { isNullOrEmpty = ((Collection) o).isEmpty(); } else if (o.getClass().isArray()) { isNullOrEmpty = (((Object[]) o).length == 0); } else { isNullOrEmpty = String.valueOf(o).isEmpty(); } } return isNullOrEmpty; } }