완벽 공략

열거 타입

1. 특정 enum 타입이 가질 수 있는 모든 값을 순회하며 출력하라
Arrays.stream(OrderStatus.values()).forEach(System.out::println);
2. enum은 자바의 클래스처럼 생성자, 메소드, 필드를 가질 수 있는가?
    public static void main(String[] args) {
        
        Order order = new Order();
        // equals 메서드로 인한 NullPointerException의 에러 발생을 제외
        if (order.orderStatus == OrderStatus.DELIVERED) {
            System.out.println("delivered");
        }
        Arrays.stream(OrderStatus.values()).forEach(System.out::println);
    }
3. enum의 값은 == 연산자로 동일성을 비교할 수 있는가?

4. enum을 key로 사용하는 Map을 정의하세요. 또는 enum을 담고 있는 Set을 만들어
보세요 -> EnumSet, EnumMap 을 쓰는 것이 성능에 훨씬 유리하다. 

플라이웨이트 패턴

객체를 가볍게 만들어 메모리 사용을 줄이는 패턴 → 객체를 재사용하는 패턴