11주차 과제 : enum

2021. 2. 18. 18:02·개발 & 방법론/Java
 

11주차 과제: Enum · Issue #11 · whiteship/live-study

목표 자바의 열거형에 대해 학습하세요. 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet 마감일시 2021년 1월 30일 토요일 오후 1시까지.

github.com

목표

자바의 열거형에 대해 학습하세요.

학습할 것 (필수)

  • enum 정의하는 방법
  • enum이 제공하는 메소드 (values()와 valueOf())
  • java.lang.Enum
  • EnumSet

 

enum 정의하는 방법

Enum 는 열거형 혹은 상수집합으로 부른다

class 대신 enum 으로 정의한다

 

정의 방법은 3가지로 나눠진다

// 1. java 파일로 정의
public enum DevList {
    JAVA,
    SPRING,
    RDBMS,
    JPA
}
public class EnumStudyMain {

    // 2. 클래스안에 선언
    enum MonsterType {UNDEAD, BEAST, ELEMENTAL}

    public static void main(String[] args) {
        ....
    }
}
// 3. 클래스밖에 선언
enum MonsterType {UNDEAD, BEAST, ELEMETAL}

public class EnumStudyMain {
    ....
}

enum 은 기본적으로 static, final 이 내장되어있다

 

사용 방법은 다음과 같다

public class EnumStudyMain {

    public static void main(String[] args) {
        System.out.println(DevList.SPRING);

        DevList devList = DevList.JAVA;
        System.out.println(DevList.JAVA);
    }
}

곧바로 사용하거나 변수에 할당해서 사용한다

 

 

enum이 제공하는 메소드

values() : 정의된 상수 배열을 반환

    public static void main(String[] args) {

        // values()
        System.out.println(DevList.values());

        for (DevList dev : DevList.values()) {
            System.out.println(dev);
        }
    }

 

valueOf(Class<T> enumType, String name) : 지정된 열거형에서 name과 일치하는 상수를 반환, 일치한게 없으면 에러가 발생한다

    public static void main(String[] args) {

        // valueOf()
        System.out.println(DevList.valueOf("JAVA"));
        System.out.println(DevList.valueOf("JAVA2"));
    }

 

ordinal() : 상수의 정의된 순서를 반환

    public static void main(String[] args) {
        for (DevList dev : DevList.values()) {
            System.out.println(dev + " = " + dev.ordinal());
        }
    }

 

name() : 상수의 이름을 반환

    public static void main(String[] args) {
        for (DevList dev : DevList.values()) {
            System.out.println(dev.name());
        }
    }

 

 

java.lang.Enum

모든 열거형은 java.lang.Enum 클래스를 상속받는다

컴파일러가 자동으로 호출하니 개발자는 건들 수가 없다

 

 

 

EnumSet

열거형을 위해 구현된 Set 인터페이스이며 다음과 같은 특징을 가진다

  • EnumSet은 모두 동일한 열거형 상수만 포함한다
  • Null 을 가질 수 없다
  • Enum 순서대로 저장된다
  • thread-safe 하지 않아서 외부에서 동기화해야한다

https://www.baeldung.com/java-enumset

 

'개발 & 방법론 > Java' 카테고리의 다른 글

12주차 : 애노테이션  (0) 2021.02.25
10주차 과제 : 멀티쓰레드 프로그래밍  (0) 2021.02.18
9주차 : 예외처리  (0) 2021.02.14
자바 8주차 : 인터페이스  (0) 2021.02.13
7주차 : 패키지  (0) 2021.01.01
'개발 & 방법론/Java' 카테고리의 다른 글
  • 12주차 : 애노테이션
  • 10주차 과제 : 멀티쓰레드 프로그래밍
  • 9주차 : 예외처리
  • 자바 8주차 : 인터페이스
loop-study
loop-study
오늘도 공부하자
  • loop-study
    개발 공부할래?
    loop-study
  • 전체
    오늘
    어제
    • 분류 전체보기 (187)
      • 목표 및 회고 (26)
      • 세미나 & 워크샵 (1)
      • 교육 및 인강 (67)
        • TDD, Clean Code with Java (5)
        • ATDD, 클린 코드 with Spring (6)
        • DDD 세레나데 (3)
        • 인프라 공방 (6)
        • 이규원의 현실 세상의 TDD (19)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
        • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
        • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
        • 스프링 시큐리티 완전정복 6.x (1)
      • 서적 (62)
        • 객체지향의 사실과 오해 (1)
        • 객체지향과 디자인패턴 (7)
        • 만들면서 배우는 클린 아키텍처 (3)
        • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
        • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
        • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
        • 토비의 스프링 (3)
        • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
        • 개발자의 글쓰기 (1)
        • 소프트웨어 장인 (17)
        • Real MySQL 8.0 (2)
        • JVM 밑바닥까지 파헤치기 (0)
      • 개발 & 방법론 (29)
        • Java (13)
        • TDD (5)
        • ATDD (3)
        • DDD (6)
        • 인프라 (2)
        • SQL (0)
      • 개인이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 백엔드 로드맵
  • 인기 글

  • 태그

    테스트 주도 개발
    조영호
    모든 개발자를 위한 HTTP 웹 기본 지식
    객체지향
    Test Driven Development
    마틴 파울러
    nextstep
    JUnit
    ATDD
    fastcampus
    엔터프라이즈 애플리케이션 아키텍처 패턴
    소프트웨어 장인
    TDD
    장인정신
    자바
    추상화
    Patterns of Enterprise Application Architecture
    스터디
    study
    스프링
    오브젝트
    인프라공방
    백기선
    김영한
    현실세상의 TDD
    DDD 세레나데
    넥스트스탭
    인프런
    java
    이규원
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
loop-study
11주차 과제 : enum
상단으로

티스토리툴바