Tiny Bunny
본문 바로가기
Java

Java - static, final, record

by 내이름효주 2024. 4. 14.
  • Java static, static final, final 차이
    • static: 값이 클래스의 모든 인스턴스에 대해 동일
      객체 생성없이 사용할 수 있는 필드와 메서드를 생성하고자 할 때 활용
      인스턴스 성질은 객체 생성 후 사용할 수 있으므로 객체 참조 없이 사용하는 정적 메소드에는 사용할 수 없다!
      객체마다 가질 필요가 없는 공용으로 사용하는 필드 혹은 인스턴스 필드를 포함하지 않는 메소드
    • final: 상수, 일반적으로 선언과 초기화를 동시에 진행
      한 번 값이 정해지고 나면 값을 바꿀 수 없는 필드
      하지만 인스턴스 변수의 경우 생성자에서 초기화할 수 있음
    • static final: 한 번 값이 정해지고 나면 값을 바꿀 수 없는 필드
  • Record 클래스는 불변(immutable) 데이터를 간단하게 표현하기 위한 목적으로 사용
  • Class 다양한 버전 (record 이용)
// v1
public record MessagesRequest(Long fromId){
}

// v2
public class MessagesRequest{
	private final Long fromId;
    
    public MessagesRequest(final ling fromId){
    this.fromId = fromId;
    }
    
    public Long fromId(){
    	return fromId;
    }
}

//v3
@AllArgsContructor
@Data
public class MessagesRequest{
	private final Long fromId;
}
  1. v1)
    •   생성자, Getter, equals(), hashCode(), toString() 메서드를 자동으로 생성하여 불변성을 보장합니다.
  2. v2)
    •   클래스 필드는 final로 선언되어 불변성을 보장합니다.
    •   생성자를 통해 필드 값을 설정하고, Getter 메서드를 통해 필드 값을 반환
  3. v3)
    •   Lombok 라이브러리를 사용하여 자동으로 게터, 세터, 생성자를 생성
    •   @Data 어노테이션은 클래스에 toString(), equals(), hashCode(), Getter/Setter 메서드 생성
    •   @AllArgsConstructor 어노테이션은 모든 필드를 가지는 생성자를 생성

'Java' 카테고리의 다른 글

Spring Batch - 데이터 생성, 즉시로딩/지연로딩  (0) 2024.04.23
Spring Batch - 기본사용법  (0) 2024.04.23
Spring Batch - 시작  (0) 2024.04.23
log.Debug  (0) 2024.04.14
Java - Selenium 세팅  (0) 2024.03.30