반응형

자바는 현재 17버전까지 공개되었지만 자바 개발에서 아직까지 표준으로 자리잡고 있는 1.8(8버전)에서 대표적으로 어떤 기능이 추가되었는지 알아봅시다.

 

Interface 변화

자바 1.8 이전에는 Interface가 public abstract 메소드만 허용했으나 static과 default 메소드를 사용할 수 있도록 변경되어 원래 Interface는 설계도로써의 역할로 추상 메소드만 갖을 수 있었으나 default라는 키워드를 사용하여 일반 메소드도 작성할 수 있게 되었습니다.

 

 

람다식 추가

람다식이란 익명 함수(Anonymous function)을 지칭하는 용어입니다. 자바에서는 함수 대신 메소드라는 키워드를 사용하므로 이름을 갖지 않는 메소드를 가리키는데 람다를 사용하므로써 불필요한 반복문의 삭제가 가능해지고 가독성이 높아지게 됩니다. 또한 메소드를 만드는 과정 없이 한 번에 처리할 수 있어지므로 생산성이 높아지고 병렬 프로그래밍이 용이합니다. 다만, 재사용이 불가능하고 디버깅이 어려우며 람다를 남발하면 비슷한 함수가 가지는 중복성이 발생할 수 있어 코드 또한 지저분해질 우려가 있습니다.

 

// 기본 형태
Man man = (String name) -> {System.out.println("이름 : " + name);}
man.intro("루니");

// 실행 블럭 제거
Man man = (String name) -> System.out.println("이름 : " + name);
man.intro("루니");

// 단일 매개 변수는 타입 생략 가능
Man man = (name) -> System.out.println("이름 : " + name);
man.intro("루니");

// 매개 변수가 하나일 때 매개 변수를 감싸는 괄호 생략 가능
Man man = name -> System.out.println("이름 : " + name);
man.intro("루니");

// 매개 변수가 없는 람다식은 괄호를 무조건 기재
Man man = () -> System.out.println("매개변수가 없는 람다식");

 

Optional 클래스 추가

Optional 클래스가 추가됨에 따라 NullPointerException의 발생 가능성에 대한 방지를 간결하게 해결할 수 있게 되었습니다.

 

기존에 null 값을 방지하기 위하여 if문을 사용했을 때 아래와 같은 코드가 나옵니다.

 

List<String> serviceList = boardService.getList();

List<String> list = null;

if(serviceList.size() != 0) {
    list = serviceList;
}

 

하지만 Optional을 사용하여 아래 코드처럼 간결하게 처리할 수 있습니다.

 

List<String> list = boardService.getList().orElseGet(()-> new ArrayList<>());

 

반응형

+ Recent posts