일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Recent Posts
Recent Comments
Archives
- Today
- Total
Tags
- android custom switch
- custom spinner
- 무선페어링
- 코딩
- android alarm
- 안드로이드
- android argument
- 툴바 고정
- navArg
- spinner hint
- CoordinateLayout
- alarm manager
- navGraph
- 스피너 힌트
- layout behavior
- navigation navigate
- Android Studio
- 안드로이드 커스텀 스위치
- android navigation
- 안드로이드 범블비
- track 공간
- android alarm manager
- android custom spinner
- 안드로이드 스튜디오
- Android
- 파이어베이스
- navController
- checkedChangeListener
- thumb 공간
- 안드로이드 커스텀 스피너
Pa K'ode
[Spring] Lombok의 Data,Builder 유용한 Annotations 본문
Lombok의 Annotaions들을 살펴보면 코딩하는데 굉장히 유용한게 많은데 그중에서 두가지만을 간추려서 적어볼까한다.
@NonNull/@Nullable 도 자주 사용하고있지만 그닥 설명이 필요한기능이 아니니 패스
@Data
코틀린으로 따지면 data class 에 주로 선언되며 자동으로 getter와 setter를 생성해주는 Annotaion 이다.
getter/setter가 무슨말이냐면, 해당 클래스의 변수를 가져오거나, 값을 할당해주는 함수를 말한다.
data.class
with Annotaion
@Data
@EqualsAndHashCode
public final class BankUiModel {
private final String bankCode;
@NonNull
private final String bankName;
private final boolean isSelected;
}
without Annotaion
public final class BankUiModel {
private String bankCode;
@NonNull
private String bankName;
private boolean isSelected;
public String getBankCode() {
return bankCode;
}
@NonNull
public String getBankName() {
return bankName;
}
public boolean isSelected() {
return isSelected;
}
public void setBankCode(String bankCode) {
this.bankCode = bankCode;
}
public void setBankName(@NonNull String bankName) {
this.bankName = bankName;
}
public void setSelected(boolean selected) {
isSelected = selected;
}
}
같은코드이지만 훨씬 간결해진다. 사용해야할 변수가 많이질수록 차이가 심하다.
@Builder
마찬가지로 주로 data class에 주로 선언되며 클래스 내에 특정 값만을 수정하려고 할떄 사용된다.
예를들어 UI에 표시되고있는 아이템을 값을 변경해야 하는 상황이리고 하면
해당 아이템의 포지션을 가져와서 새로운 클래스를 생성후, 그 자리를 매꿔주는 방식이다. 이떄 Builder기능을 사용한다
새로운 클래스를 생성하는 과정에서 소수의 값들만 변경해야 한다면 아주 유용하게 사용할수 있다.
Activity.class
with Annotation
final TransactionCallUiModel oldItem = mADP_Transaction_Call.getCurrentList().get(mSelectedIndex);
final TransactionCallUiModel oldItemFix = oldItem.toBuilder()
.isSelected(false)
.build();
변경이 필요한 변수만을 수정후 새로운 클래스를 생성해 준다.
without Annotation
final TransactionCallUiModel oldItem = mADP_Transaction_Call.getCurrentList().get(mSelectedIndex);
final TransactionCallUiModel oldItemFix = new TransactionCallUiModel(
oldItem.getId(),
oldItem.getName(),
oldItem.getBalance(),
!oldItem.isSelected()
);
변경이 필요없는 변수들 까지도 가져와 새로운 클래스에 넣어줘야 한다.
마찬가지로 클래스 내에 선언된 변수가 많을수록 코드가 비대해진다.
'개발노트' 카테고리의 다른 글
[Collection] HashMap, HashSet, 알아두면 유용한 자료구조 (0) | 2021.12.23 |
---|
Comments