Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- java 기술면접
- 웹어플리케이션 서버
- 백준 17779
- springboot
- Coroutine
- java
- spring security
- Kotlin
- spring cloud
- 백준 16236
- spring oauth
- with recursive
- 백준 19238
- re.split
- 백준 파이썬
- MSA
- 프로그래머스
- 파이썬
- Spring Boot
- 백준 16719
- 백준
- JVM
- 백준 17626
- JPA
- sql 기술면접
- 백준 16235
- MySQL
- 백준 15685
- 프로래머스
- Spring
Archives
- Today
- Total
시작이 반
[Java] Lombok 본문
SMALL
Lombok
Java 라이브러리중 하나로 반복적으로 생성해야 하는 코드들을 어노테이션기반으로 자동 생성해주는 라이브러리
Getter/ Setter
@Getter @Setter
private String name;
user.setName("test");
String userName = user.getName();
필드 레벨이 아닌 클래스 레벨에 @Getter / @Setter을 선언하면 모든 필드에 getter, setter가 생성된다.
Constructor
@NoArgsConstructor : 파라미터가 없는 기본 생성자 생성
@RequiredArgsConstructor : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 생성
@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자 생성
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
@NonNull
private String username;
@NonNull
private String password;
private int[] scores;
}
User user1 = new User();
User user2 = new User("name", "password");
User user3 = new User(1L, "name", "password", null);
ToString
클래스명( 필드1명=필드1값, 필드2명=필드2값, ... ) 의 포맷으로 생성
exclude속성으로 제외 필드 설정 가능
@ToString(exclude = "password")
public class User {
private Long id;
private String username;
private String password;
}
User user = new User();
user.setId(1L);
user.setUsername("name");
user.setUsername("password");
System.out.println(user);
▼
User(id=1, username=name)
@EqualsAndHashCode
equals()와 hashCode()를 자동생성
equals() : 객체의 값이 같은지 비교
hashCode : 객체의 저장된 주소가 같은지 비교
exclude속성으로 제외 필드 설정 가능
callSuper속성을 통해서 부모 클래스의 필드까지 비교할지 설정 가능
public class test {
public static void main(String[] args) {
EqualsAndHashCode_Test();
System.out.println();
EqualsAndHashCode_Test2();
}
@EqualsAndHashCode(exclude = "value1")
@Setter
public static class Lombok1 {
private String value1;
private String value2 = "value2";
}
@EqualsAndHashCode
@Setter
public static class Lombok2 {
private String value1;
private String value2 = "value2";
}
public static void EqualsAndHashCode_Test() {
Lombok1 test1 = new Lombok1();
test1.setValue1("aaaa");
System.out.println("test1 HashCode - "+ test1.hashCode());
Lombok1 test2 = new Lombok1();
test2.setValue1("bbbb");
System.out.println("test2 HashCode - "+ test2.hashCode());
System.out.println("result - " + test1.equals(test2));
}
public static void EqualsAndHashCode_Test2() {
Lombok2 test1 = new Lombok2();
test1.setValue1("aaaa");
System.out.println("test1 HashCode - "+ test1.hashCode());
Lombok2 test2 = new Lombok2();
test2.setValue1("bbbb");
System.out.println("test2 HashCode - "+ test2.hashCode());
System.out.println("result - " + test1.equals(test2));
}
}
@Data
@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정
@Data
public class User {
// ...
}
참고
LIST
'Programming > Java' 카테고리의 다른 글
[Java] 코테 준비 ( 알아야할 것들) (2) | 2021.08.13 |
---|---|
[Java] SOLID (1) | 2021.05.10 |
[Java] Stream (0) | 2021.01.20 |
[Java] 람다식(Lambda) (0) | 2021.01.20 |
[Java] Optional (0) | 2021.01.20 |