CodeGym /행동 /자바 멀티스레딩 /열거형 및 모든 기능

열거형 및 모든 기능

자바 멀티스레딩
레벨 5 , 레슨 1
사용 가능
열거형 및 모든 기능 - 1

"안녕, 아미고!"

"안녕, 아미고!"

"나는 당신에게 매우 흥미로운 것에 대해 말할 것입니다. 꽤 간단하지만 그것이 훨씬 더 흥미로워집니다. 열거형이라고 합니다. 열거형은 변수가 가질 수 있는 특정 값 집합을 정의하는 유형입니다. 살펴봅시다. 바로 예를 들면:"

열거형 클래스의 정의
public enum Direction
{
 UP,
 DOWN,
 LEFT,
 RIGHT,
}
열거형 사용
Direction direction = Direction.LEFT;

if (direction == Direction.LEFT)
 direction = Direction.RIGHT;
else
 direction = Direction.DOWN;

"그럼 그냥 일련의 값을 나열하면 되는 건가요?"

"예, 열거형을 선언하고 내부에 가능한 모든 값을 쉼표로 구분하여 나열합니다."

"사용하기도 매우 쉽습니다."

"널로 설정할 수 있습니까?"

"예, enum은 일반 클래스입니다. 또는 인터페이스가 클래스와 같은 방식과 유사한 클래스와 비슷합니다."

"그러면 클래스를 사용할 수 있는 곳이면 어디든 enum을 사용할 수 있습니까?"

"예."

"클래스 내에서 열거형을 선언할 수 있습니까?"

"예."

"그리고 enum을 상속받나요?"

"아니요, 열거형을 상속할 수 없고 열거형은 다른 클래스를 상속할 수 없습니다."

"왜 그런 겁니까?"

"Java 컴파일러가 열거형을 대략 다음과 같이 변환하기 때문입니다.

public final class Direction extends Enum
{
 public static final Direction UP = new Direction();
 public static final Direction DOWN = new Direction();
 public static final Direction LEFT = new Direction();
 public static final Direction RIGHT = new Direction();

 private Direction() {} // Private constructor
}

"이 예에서 볼 수 있듯이:"

1) Direction 클래스는 Enum 클래스를 절대적으로 상속하므로 다른 것을 상속할 수 없습니다.

2) Direction 클래스는 최종으로 선언되므로 다른 어떤 것도 상속할 수 없습니다.

3) Direction 클래스의 변수는 실제로 공개 정적 최종 방향 변수입니다. 이것은 그것들을 사용하는 코드에서 분명합니다:

방향 방향 = 방향 .LEFT ;

4) Direction 클래스에는 하나의 생성자만 포함되며 비공개입니다. 즉, Direction 개체는 클래스 내부의 코드를 사용해서만 만들 수 있습니다. 선언된 객체 외에는 객체를 생성할 수 없습니다.

5) 방향 변수는 기존 방향 개체에 대한 참조를 할당할 수 있습니다. 그것들은 모두 열거형 내에 설정됩니다. 이 유형의 다른 개체는 없으며 앞으로도 없을 것입니다.

6) 단순 참조 비교만 수행하는 «==»를 사용하여 방향 개체를 비교할 수 있습니다."

"매우 명확하다고 말할 수는 없지만 귀하의 예를 들면 훨씬 더 명확합니다."

"좋습니다. 그럼 여기 당신을 위한 약간의 추가 정보가 있습니다:"

1) 각 방향 개체에는 고유한 번호가 있습니다. 첫 번째(UP)는 0, 두 번째(DOWN)는 1, 세 번째(LEFT)는 2 등입니다. 이 숫자는 ordinal() 메서드를 사용하여 얻을 수 있습니다. "화면을 보세요.

Direction direction = Direction.LEFT;
int index = direction.ordinal();
int index2 = Direction.RIGHT.ordinal();

2) 각 열거형에는 열거형 값의 배열을 반환하는 values () 메서드가 있습니다.

int leftIndex = Direction.LEFT.ordinal();

Direction[] array = Direction.values();
Direction left = array[leftIndex];

"이것은 열거형 요소의 인덱스를 가져온 다음 해당 인덱스를 사용하여 요소를 다시 가져올 수 있음을 의미합니다."

"또한 foreach 루프 에서 열거형을 사용할 수 있습니다 ."

for (Direction direction : Direction.values())
{
 System.out.println(direction);
}
화면 출력:
UP
DOWN
LEFT
RIGHT

"enum이 toString 메서드를 재정의한다는 의미인가요? 결국 다음과 같은 내용이 표시되지 않습니다."
«com.codegym.Direction@123fd4»?

"예. 또한 각 열거형과 방향을 문자열로 변환할 수 있으며 그 반대도 가능합니다."

문자열로 변환:
String left = Direction.LEFT.toString(); // left == "LEFT";
문자열을 enum으로 변환:
Direction direction = Direction.valueOf("LEFT");

"아, 알았다."

"Direction에 없는 valueOf 함수에 문자열을 전달하면 어떻게 됩니까? 예를 들어 «AMIGO»?"

"어떻게 생각하나요?"

"예외?"

"예. IllegalArgumentException입니다."

"음, 이것으로 열거형 세계에 대한 소개를 마치겠습니다."

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION