Java/enum
enum 메서드 (values , orinal, valueOf ..생성자)
고인돌개발자
2021. 5. 29. 23:18
Blog 에서 배우다. ( https://www.opentutorials.org/module/1226/8025 )
표 참고 Blog - ( https://limkydev.tistory.com/66 )
Static Methods |
valueOf(String arg) | String 값을 enum에서 가져옴. 값이 없으면 예외 발생 |
valueOf(Class<T> class, String arg) | 넘겨받은 class에서 String찾아, enum에 가져옴. valueOf(String arg)는 내부적으로 자기자신 Class를 가져옴. |
|
values() | eum의 요소들을 순서대로 enum타입의 배열로 리턴. (ENUM$VALUES)의 카피임으로 자주 호출하지 않길 |
|
Static이 아닌 Methods |
name() | 호출된 값의 이름을 String으로 리턴. |
ordinal() | 해당 값이 enum에 정의된 순서를 리턴. | |
compareTo(E o) | enum과 지정된 객체의 순서를 비교. 지정된 객체보다 작은 경우 음의 정수, 동일하면 0, 크면 양의 정수 리턴 |
|
equals(Object other) | 지정된 객체가 enum 정수와 같은경우, true를 리턴. |
| 1. Values
package self._enum.blog1;
public class Sample_values {
public String name;
public int size;
public Type4 type;
public static void main(String[] args) {
/*
* eum의 요소들을 순서대로 enum타입의 배열로 리턴.
* 열거된 모든 원소를 배열에 담아 순서대로 반환
*/
for(Type4 type : Type4.values()) {
System.out.println(type);
}
/*
* length 사용 가능
*/
System.out.println(Type4.values().length);
}
}
enum Type4 {
WALKING4, RUNNING4, TRACKING4, HIKING4;
}
| 2. ordinal
package self._enum.blog1;
public class Sample_ordinal {
public String name;
public int size;
public Type5 type;
public static void main(String[] args) {
Sample_ordinal shoes = new Sample_ordinal();
shoes.name = "나이키";
shoes.size = 230;
shoes.type = Type5.WALKING;
/*
* ordinal(). 원소에 열거된 순서를 정수 값으로 반환 (0부터 반환
*/
System.out.println(shoes.type.ordinal());
Type5 tp = Type5.HIKING;
System.out.println(tp.ordinal());
}
}
enum Type5 {
WALKING, RUNNING, TRACKING, HIKING;
}
| 3. valueOf
package self._enum.blog1;
public class Sample_valueOf {
public static void main(String[] args) {
Type6 tp1 = Type6.WALKING;
/*
* valueOf() : 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소를 반환
* (주어진 String과 일치하는 원소가 없는 경우 IllegalArgumentException 예외 발생)
*/
Type6 tp2 = Type6.valueOf("WALKING");
System.out.println(tp1);
System.out.println(tp2);
}
}
enum Type6 {
WALKING, RUNNING, TRACKING, HIKING;
}
| 4. enum 열거형 상수에 속성 부여하기
package self._enum.blog1;
public class Sample_Get {
public static void main(String[] args) {
for(Type7 type : Type7.values()){
System.out.printf("Shoes %s , Shoes Size %s , Shoes Size %d \n",type, type.getName(), type.getSize());
System.out.println(type.name); // public(defalut) 선언으로 사용 가능
//System.out.println(type.size); // private 으로 접근 불가
}
}
}
enum Type7 {
// 상수("연결할 문자")
WALKING("나이키",240), RUNNING("아디다스",250) , TRACKING("프로스펙스",260), HIKING("블랙야크",270);
/* 아래를 public 으로 사용하여 외부에서 직접 접근할 수 있으나,
* 아래와 같이 public 함수를 사용하는것이 바람직해 보임
* 아래 public String name 은 위 구문에서 type.name 으로도 접근이 가능함
*/
String name;
final private int size;
private Type7(String name, int size) { //enum에서 생성자 같은 역할
this.name = name;
this.size = size;
}
public String getName() { //
return name;
}
public int getSize() { // 문자를 받아오는 함수
return size;
}
}