User 클래스에 사용자의 레벨을 저장할 필드를 추가하자.
정수형 상수 값으로 정의한 사용자 레벨
public class User{
private static final int BASIC = 1;
private static final int SILVER = 2;
private static final int GOLD = 3;
int level;
public void setLevel(int level) {
this.level = level;
}
if (user1.getLevel() == User.BASIC) {
user1.setLevel(User.SILVER);
}
문제는 level 타입이 int 이기 때문에 다른 종류의 정보를 넣는 실수를 해도 컴파일러가 체크하지 못한다.
.setLevel(other.getSum())
**; // 다른 타입을 나타내는 정보.setLevel(1000);
** // 범위 밖의 수⇒ 숫자 타입을 직접 사용하기보다 자바 5 이상에서 제공하는 이넘**enum
** 을 이용하는게 편리하며 안전하다.
public enum Level {
BASIC(1), SILVER(2), GOLD(3);
private final int value;
Level(int value){ // DB 에 저장할 값을 넣어줄 생성자
this.value = value;
}
public int intValue(){
return value;
}
// 값으로부터 Level 타입 오브젝트를 가져오도록 만든 스태틱 메서드
public static Level valueOf(int value){
switch(value){
case 1: return BASIC;
case 2: return SILVER;
case 3: return GOLD;
default: throw new AssertionError("Unknown value: "+value);
}
}
}
int
타입의 값을 갖는다.Level
타입의 오브젝트로 안전하게 사용한다..setLevel(1000)
** 같은 코드는 컴파일러가 타입이 일치하지 않는다는 에러를 발생시킬 것이다.Level
타입 변수를 추가하자int
타입 가능level
, int login
, int recommend