반응형
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 |
Tags
- 메모리스트림
- 리눅스셋팅
- 아이디중복
- ThreadGroup()
- include액션태그
- first-child
- 표현 언어
- ObjectInputStream
- include 지시자
- InputDialog
- ID중복
- char[] String 형변환
- 스레드그룸
- sleep()메소드
- isinterrupted()
- include지시자
- String char[] 형변환
- Daemon()
- MemoryStream
- StringReader
- StringWriter
- 리눅스세팅
- 상관 서브 쿼리
- interrupt()
- Linux셋팅
- first-of-child
- 상관서브쿼리
- 동기화
- interrupted()
- Linux세팅
Archives
- Today
- Total
다연이네
[days24] 열거형(enums) 본문
반응형
열거형
서로 관련된 상수를 편리하게 선언하기 위한 것, 여러 상수를 정의할때 사용하면 유용하다.
클래스 안/밖에 선언 가능, 또다른 클래스 만드는 것도 가능
enum Direction{ EAST, SOUTH, WEST, NORTH } //열거형
class Unit{
int x, y;
Direction dir;
void init() {
dir= Direction.EAST;
}
void move() {
switch (dir) {
case EAST:
break;
case WEST:
break;
case NORTH:
break;
default:
break;
}
}
}
package days24;
public class Ex07 {
public static void main(String[] args) {
Direction dir;
// Enum 클래스 안의 메소드 dir.name();
//열거형을 선언하면 부모는 java.lang.Enum
Direction d1 = Direction.EAST;
Direction d2 = Direction.valueOf("WEST");
Direction d3 = Enum.valueOf(Direction.class, "EAST");
System.out.println("d1= "+d1); //d1= EAST
System.out.println("d2= "+d2); //d2= WEST
System.out.println("d3= "+d3); //d3= EAST
System.out.println("d1==d2 ? "+ (d1==d2)); //d1==d2 ? false
System.out.println("d1==d3 ? "+ (d1==d3)); //d1==d3 ? true
System.out.println("d1.equals(d3) ? "+d1.equals(d3)); //d1.equals(d3) ? true
//System.out.println("d1 > d3 ? " + (d1 > d3)); //에러
System.out.println("d1.compareTo(d3) ? " +d1.compareTo(d3)); //d1.compareTo(d3) ? 0
System.out.println("d1.compareTo(d2) ? " +d1.compareTo(d2)); //d1.compareTo(d2) ? -2
switch (d1) {
case EAST:
System.out.println("The direction is EAST."); //The direction is EAST.
break;
case SOUTH:
System.out.println("The direction is SOUTH.");
break;
case WEST:
System.out.println("The direction is WEST.");
break;
case NORTH:
System.out.println("The direction is NORTH.");
break;
default: System.out.println("Invalid direction");
break;
}
Direction[] dArr = Direction.values();
for (Direction d : dArr) {
System.out.printf("%s=%d%n", d.name(), d.ordinal()); //EAST=0
}
}
}
만약 enum이 없다면 ?
class Direc{
static final Direc EAST = new Direc(1); //자기자신의 상수 객체
static final Direc SOUTH = new Direc(1);
static final Direc WEST = new Direc(1);
static final Direc NORTH = new Direc(1);
}
열거형에 멤버 추가하기
Enum() 클래스에 정의된 ordinal()이 열거형 상수가 정의된 순서를 반환 (0,1,2...)하지만, 이 값을 열거형 상수의 값으로 사용하지 않는 것이 좋다. 이 값은 내부적인 용도로만 사용되기 위한 것이다.
열거형 상수의 값이 불연속적인 경우에는 열거형 상수 이름 옆에 원하는 값을 괄호로 넣어준다.
enum Direction3 { EAST(1), SOUTH(5), WEST(-1), NORTH(11); }
Enum()은 내부적으로 클래스로 컴파일되어지기 때문에 Direction에 int값을 넘겨받는 생성자가 있어야 한다.
public class Ex08 {
public static void main(String[] args) {
Direction3 d = Direction3.NORTH;
System.out.println(d.getValue());
}
}
enum Direction3 {
EAST(1), SOUTH(5), WEST(-1), NORTH(11);
private final int value;
public int getValue() { // private 값을 돌려줄 get함수
return this.value;
}
Direction3(int value) {
//접근지정자는 오직private, 생략도 가능(생략해도 디폴트가 아닌 private이다)
this.value = value; // 상수는 반드시 최소 한번은 초기화 해야함
}
}
반응형
'Java' 카테고리의 다른 글
[days24] Annotation (0) | 2020.10.23 |
---|---|
[문제] 열거형 활용 예제 (0) | 2020.10.23 |
[days24] Generics (0) | 2020.10.23 |
[days23] 컬렉션 클래스 - Properties (0) | 2020.10.21 |
[days23] 컬렉션클래스<Map> - TreeMap (0) | 2020.10.21 |
Comments