// java is the only language where new way of doing things is more complicated than old way..
// old way..
if (project != null) {
ApplicationType applicationType = project.getApplicationType();
if (applicationType != null) {
String typeDirName = applicationType.getTypeDirName();
if (typeDirName != null) {
System.out.println(typeDirName);
}
}
}
// new way
Optional<Project> optionalProject = Optional.ofNullable(project);
// safe, java 8, but still ugly and omission-prone
if (optionalProject.isPresent()) {
ApplicationType applicationType = optionalProject.get().getApplicationType();
Optional<ApplicationType> optionalApplicationType = Optional.ofNullable(applicationType);
if (optionalApplicationType.isPresent()) {
String typeDirName = optionalApplicationType.get().getTypeDirName();
Optional<String> optionalTypeDirName = Optional.ofNullable(typeDirName);
if (optionalTypeDirName.isPresent()) {
System.out.println(optionalTypeDirName);
}
}