본문 바로가기
코딩하는 코커두드/자바, 스프링 백엔드 과정

Day 17 _ 자바 심화(Effective) (20230503)

by 코커두드 2023. 5. 4.

 

1. 애너테이션(annotation)

- 정보 전달을 위한 목적으로 만들어진 문법 요소

- 주석과 비슷. 하지만 주석은 사람에게 정보를 전달, 애너테이션은 다른 프로그램에게 전달

 

(1) 표준 애너테이션 : JDK에 내장된 일반적인 애너테이션

ex) @Override, @Deprecated, @SuppressWarnings, @FunctionalInterface 등이 있음

 

(2) 메타 애너테이션 : 다른 애너테이션을 정의할 때 사용함

ex) @Target, @Documented, @Inherited, @Retention 등

 

2. 람다식(Lambda Expression) : 함수형 프로그래밍 기법을 지원하는 자바의 문법요소

- 메서드를 하나의 식으로 표현

- 장점 : 코드를 간결하고 명확하게 표현할 수 있음

- 반환타입과 이름 생략 가능 (익명함수 anonymous function)

 

<예시>

int sum(int x, int y) {

    return x + y;

}

(1) 메서드 바디에 실행문 하나일 때 중괄호 및 return 생략 가능

ex) (int x, int y) -> x + y

 

(2) 매개변수 타입을 함수형 인터페이스를 통해 유추 가능할 때 매개변수 타입 생략 가능

ex) (x, y) -> x + y

 

- 람다식은 이름이 없기 때문에 익명 객체라 할 수 있음

- 익명객체는 익명 클래스를 통해 만들 수 있음

- 익명 클래스 : 객체의 선언과 생성을 동시에 함. 하나의 객체 생성 및 단 한 번 사용(일회용)

 

3. 스트림(Stream)

- 배열 및 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있게 해주는 반복자

- 생성, 중간연산, 최종연산 세 단계로 구성

- 원본 데이터 소스를 변경하지 않음(read only)

- 일회용(ontime only)

- 내부반복자

 

* 오늘도 역시 위염을 달고 살았습니다. 카페인이 부족하니 머리가 아프더라고요. 낮에는 두통으로 인해 이해하기 어려웠는데 진통제의 힘을 빌려 다시 보니 이해가 되네요. 내일 페어분과의 실습 전에 한 번 더 훑고 가야겠다는 생각이 듭니다. 아, 오늘 배운 것은 차차 익숙해져서 잘 사용하면 정말 간결하고, 눈에 확 들어오는 코드를 짤 수 있겠다는 생각이 들더라고요!

 

*목요일 하루만 더 버티면 3일간의 휴일을 갖게 됩니다. 저에게는 다행스러운 순간입니다. 부족한 것을 채울 시간이 생긴 셈이거든요.