Java - 기타 문법

kangking·2024년 6월 4일

Java

목록 보기
8/10

어노테이션

프로그램이 컴파일하고 실행할 때, 특정 클래스나 메서드, 변수 등을 특별히 구분해서 특정 역할을 수행하도록 추가작업을 할 수 있도록 남기는 마킹의 개념

  • @Override라는 어노테이션은 프로그램(JVM)에게 해당 메서드는 추상 메서드를 구현한 메서드라는 표식을 남겨 불필요한 오류로 인식하거나 잘못 동작하지 않도록 알려주는 어노테이션
  • @Getter 라는 Lombok 어노테이션은 해당 클래스에 Getter가 필요하다는 특정 표식을 남겨 나중에 JVM이 이를 컴파일하고 실행할 때, 다른 클래스와 구별하여 다른 특정 작업(get,set메서드 생성)을 추가적으로 수행할 수 있도록 알려준다.

형식

//어노테이션의 사용 범위와 유지정책 설정
@Target()//해당 어노테이션을 어다에 사용할 것인지(메서드, 타입 등)
@Retention() 
public @interface CustomAnnotation{
	boolean enabled() default true
}

사용 범위(ElementType)

TYPE

클래스에 붙여서 사용 가능

METHOD

메소드에 붙여서 사용 가능

FIELD

변수에 붙여서 사용 가능

적용 시점(RetentionPolicy)

RUNTIME

프로그램이 실행되는 동안 적용됨

SOURCE

소스코드를 작성하고 컴파일 할 때 적용됨

자주쓰는 어노테이션

  • 스프링 어노테이션
  • Lombok
  • Swagger

람다식

메소드를 간단하게 표현한 것. 메소드의 이름이 필요 없기 때문에 익명 함수의 한 종류이다.

  • 함수형 프로그래밍을 지원하기 위한 기능
  • 불필요한 코드를 줄이고, 가독성을 높이기 위해 사용
  • 성능적으로 큰 차이는 없고 개발자의 편의상 주로 사용

형식

(매개변수 클래스명 매개변수명) -> {
	실행코드
    반환값
}

//기본 형식은 위와 같지만 상황에 따라 훨씬 더 생략가능

매개변수명 -> 실행코드

Stream API

데이터를 처리하는데 자주 사용되는 함수들을 정의해둔 것으로, 데이터를 추상화하여 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법을 제공한다.

Java8 버전 이상부터 사용하는 개념으로, 하드웨어와 프로그램의 입출력을 중개하는 IOStream과는 구분된다 (여기서의 Stream은 StreamAPI)

특징

원본 데이터를 변경하지 않고 데이터를 처리한다.

  • 재사용이 가능한 컬렉션과 다르게 단 한 번만 사용

사용 방법

1. 스트림 생성

컬렉션, 배열, 람다식, 파일, 빈 스트림 등을 통해 생성할 수 있다(.stream())

  • 컬렉션
Stream<String> stream1 = list.Stream();
  • 람다식
Stream stream2 = Stream.iterate(2, n -> n+2);
  • 빈 스트림
Stream stream3 = Stream.empty();

2. 중개 연산(필터, 맵)

일반적으로 아래와 같이 정해진 연산들만 수행할 수 있음

  • fillter()

    조건에 맞는 데이터를 선별

  • distinct()

    중복 제거

  • map()

    새로운 데이터 생성

  • sorted()

    정렬

  • peek()

    연산 결과 확인

3. 최종 연산

  • collect()

    중개 연산한 값을 컬렉션 형태로 수집

  • forEach()

    반복

  • findAny()

    병렬 처리

  • count()

    숫자 세기

  • min()

    최솟값

  • max()

    최댓값

  • sum()

    합계

  • average()

    평균

profile
하루하루 의미있게

0개의 댓글