- enum 목차
enum은 열거형이라고 부른다 열거형은 서로 연관된 상수들의 집합니다.
즉, enum=서로 연관된 상수들의 집합.
enum
Fruit{
APPLE, PEACH, BANANA;
}
enum
Company{
GOOGLE, APPLE, ORACLE;
}
public
class
ConstantDemo {
public
static
void
main(String[] args) {
/*
if(Fruit.APPLE == Company.APPLE){
System.out.println("과일 애플과 회사 애플이 같다.");
}
*/
Fruit type = Fruit.APPLE;
switch
(type){
case
APPLE:
System.out.println(
57
+
" kcal"
);
break
;
case
PEACH:
System.out.println(
34
+
" kcal"
);
break
;
case
BANANA:
System.out.println(
93
+
" kcal"
);
break
;
}
}
}
enum의 Fruit라는것도 클래스이다 .
스위치문의 case에서 사용하는 그냥 FRUIT.APPLE을 안적고 그냥 APPLE을 적어도 앞에 플룻을 적지않고 그 플룻의
상수만 적어도 된다.
enum을 사용하는 이유를 정리하면 아래와 같다.
- 코드가 단순해진다.
- 인스턴스 생성과 상속을 방지한다.
- 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다
enum과 생성자.
생성자 -> 클래스이름과 같은 메소드는 생성자이다.
enum
Fruit{
APPLE, PEACH, BANANA;
Fruit(){
System.out.println(
"Call Constructor "
+
this
);
}
}
이것과 같이
enum에 생성자를 추가하면
APPLE,PEACH,BAnANA를 하나하나 만들때마다 호출될때마다 상수들의 값들이 세팅될대마다
플루트가 인스턴스화 되면서 인스턴스를 만들려고 생성자가 호출되어 총 3회 호출된다.(문법적으로 숨어져
있음)
+this는 각각의 이름을 불러온다.
또한 필드값(변수값)을 가질수있다 메소드도 가질수 있다
Fruit(String color){
System.out.println(
"Call Constructor "
+
this
);
this
.color = color;
}
생성자를 만들때마다 컬러라는 매개변수를 받아 this가 있는경우에는 전역변수이고.
this가없는 color는 매개변수를 가르키게된다 즉 지역변수이다.
지역변수>전역변수
this 명시하지 않는경우에는 지역 명시한경우에는 전역이다.
위와같이 color라는 매개변수를 받는다.
enum
Fruit{
APPLE(
"red"
), PEACH(
"pink"
), BANANA(
"yellow"
);
public
String color;
Fruit(String color){
System.out.println(
"Call Constructor "
+
this
);
this
.color = color;
}
}
APPLE 뒤에 ( ) 은 생성자를 호출하는것이고 괄호안의 인자는 생성자의 Fruit( String color)로 들어가고
들어가면 color; 여기로 들어간다. 또한 this.clor가 다시 public String color로 다시 들어가면서 레드가 된다.
열거형은 그것자체가 클래스이기떄문에 내부에 필드 생성자 메소드 있다. 단순히 상수가 아니라 더 많은
역할을 할 수 있다.
열거형은 값들을 저장하고 그값들이 변경되지않도록 한다.
'Java' 카테고리의 다른 글
접근제어자 & 사용이유 (0) | 2019.09.12 |
---|---|
참조 (reference) (0) | 2018.09.04 |
java clone (0) | 2018.09.04 |
java finalize , garbage collection (0) | 2018.08.29 |
자바 equals (0) | 2018.08.29 |