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;
}
- v1)
- 생성자, Getter, equals(), hashCode(), toString() 메서드를 자동으로 생성하여 불변성을 보장합니다.
- v2)
- 클래스 필드는 final로 선언되어 불변성을 보장합니다.
- 생성자를 통해 필드 값을 설정하고, Getter 메서드를 통해 필드 값을 반환
- v3)
- Lombok 라이브러리를 사용하여 자동으로 게터, 세터, 생성자를 생성
- @Data 어노테이션은 클래스에 toString(), equals(), hashCode(), Getter/Setter 메서드 생성
- @AllArgsConstructor 어노테이션은 모든 필드를 가지는 생성자를 생성