[JAVA] Annotation 과 Lambda

정동아·2023년 5월 3일

백엔드 부트캠프

목록 보기
16/41

1. Annotation (애너테이션)

애너테이션은 소스코드가 컴파일되거나 실행될 때 컴파이러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소이다.
주석은 개발자에게 정보 전달, 애너테이션은 다른 프로그램에 정보를 전달한다고 이해하면 된다.

그동안 사용했던 @Override 가 대표적인 애너테이션이었다.
JDK에서 기본으로 제공하는 애너테이션은
1) 표준 애너테이션 - JDK에 내장된 일반 애너테이션
2) 메타 애너테이션 - 다른 애너테이션을 정의할 때 사용하는 애너테이션

으로 구분된다.

1) 표준 애너테이션에는 대표적으로

  • @Override
    선언한 메서드가 상위 클래스의 메서드를 오버라이딩 하거나 추상 메서드를 구현하는 메서드라는 것을 컴파일러에게 알려줌

  • @Deprecated
    기존에 사용하던 기술이 다른 기술로 대체되어 기존 기술을 적용한 코드를 더이상 사용하지 않도록 유도할 때 사용

  • @SuppressWarnings
    컴파일 경고 메시지가 나타나지 않도록 한다. 중괄호에 여러개의 경고 유형을 나열해서 여러 개의 경고를 한번에 묵인하게 할 수 있음

  • @FunctionalInterface
    함수형 인터페이스를 선언할 때 컴파일러가 함수형 인터페이스의 선언이 바르게 선언되었는지 확인하도록 함. (바르지 않을 경우 에러 발생시킴)

2) 메타 애너테이션에는 대표적으로

  • @Target
    애너테이션을 적용할 대상을 지정하는데 사용함. (대상 타입과 적용 범위는 사용할 때 검색)

  • @Documented
    애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록하는 설정이다.

  • @Inherited
    하위 클래스가 애너테이션을 상속받도록한다. 이걸 상위 클래스에 붙이면, 하위 클래스도 상위클래스에 붙은 애너테이션들이 동일하게 적용된다.

  • @Retention
    특정 애너테이션의 지속시간을 결정한다.

  • @Repeatable
    애너테이션을 여러 번 붙일 수 있도록 허용한다.

    
    
    
    

2. Lambda (람다)

람다는 함수형 프로그래밍 기법을 지원하는 자바의 문법요소이다.
메서드를 하나의 식으로 표현한 것으로, 코드를 간결하고 명확하게 표현할 수 있다.

람다식에서는 반환타입과 이름을 생략할 수 있다. = 익명함수, 익명 객체이다.
익명 객체는 익명 클래스를 통해 만들 수 있는데, 익명 클래스란 객체의 선언과 생성을 동시에 해서 오직 하나의 객체를 생성하고, 단 한번만 사용되는 일회용 클래스이다.

코드를 입력하세요

메서드 참조는 람다식에서 불필요한 매개변수를 제거할 때 주로 사용한다.
메서드 참조도 람다식과 마찬가지로 인터페이스의 익명 구현 객체로 생성되므로 인터페이스의 추상 메서드가 어떤 매개변수를 가지고, 리턴 타입이 무엇인가에 따라 달라진다.

//정적 메서드를 참조할 때 
클래스 :: 메서드

//인스턴스 메서드를 참조할 때 
참조 변수 :: 메서드

//생성자를 참조할 때 (객체 생성)
클래스 :: new

0개의 댓글