본문 바로가기

IDE/IntelliJ

자바 프로젝트에서 Record 클래스를 인식하지 못하는 이슈

이 문서의 내용

    테스트 환경 및 주요 아젠다

    더보기

    이 프로젝트의 개발 환경

    • 개발 언어 및 환경
      • OpenJDK 17.0.9
      • IntelliJ IDEA 2020.3 Ultimate Edition

    자바 소스 파일을 만들 때 Record 클래스 선택기가 비활성화되어 있습니다.

    소스 파일에서는 Record 클래스를 선언 문법을 처리하지 못하고 'class' or 'interface' expected 오류가 발생합니다.

    Record를 지원하는 버전 확인

    자바의 Record는 다음 버전에서 지원합니다.

    IntelliJ IDEA에서 자바 Record를 활성화 하려면 2020.1 버전 이상을 사용합니다.

    프로젝트 설정 변경

    File | Project Structure | Project Settings | Project를 엽니다. Project language level15(Preview)로 설정합니다.

    Project language level 변경하면 다음 경고문이 팝업됩니다.

    더보기

    you must accept the terms of legal notice of the beta Java specification to enable support for "15 (Preview) - Sealed types, records, patterns, local enums and interfaces".
    The implementation of an early-draft specification developed under the Java Community Proecess (JCP) is made available for testing and evaluation purposes only and is not compatible with any specification of JCP.

     IDE의 자바와 관련된 Beta 기능 활성화에 대한 안내입니다. Accept를 누르고 프로젝트 설정 변경을 완료합니다.

    IDE 재시작과 같은 별다른 액션 없이도 Record 문법을 정상적으로 처리하게 됩니다.

    이제 Project | 패키지 우클릭 | New | Java Class에서 Record (Preview Feature)가 표시됩니다.

    Record 이름을 입력하고 생성하면 별도의 프로퍼티를 갖지 않는 기본 포멧의 소스 파일이 생성됩니다.

    public record Fruit()
    {
    
    }

    정리 및 복습

    • 자바의 Record는 Java 16 (JEP 395)에서 최종적으로 릴리즈되었습니다. JDK 16 이상을 필요로 합니다.
    • IntelliJ IDEA에서는 2020.1 버전 이상에서 사용 가능합니다.
    • IntelliJ IDEA에서 Record를 활성화 하려면 Project language level 15(Preview) 이상으로 설정합니다.