rasensio
4/6/2016 - 2:12 AM

optional.java

// 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);
        	}
}