What I Learned
호눅스의 강의
열거형 (Enumeration)
열거형은 관련된 상수들을 같이 묶어놓은 것이다. 자바의 열거형은 type-safe이다. 불연속적인(정수로 치환이 가능한) 개수에 제한이 있는 항목만 열거형으로 만들 수 있다. 변수명은 규칙에 따라 항상 대문자로 한다.
Type-safe란 값과 타입을 모두 체크해서 같은 타입끼리만 비교가 가능하게 해준다.
- 열거형의 비교: 열거형은 같은 열거형끼리 연산이 가능해서 equals() 메서드를 사용할 수 있다.
- 열거형 비교시에 == 를 쓰면 같은 객체인지 비교하고 equals()를 쓰면 값이 같은지 비교한다.
- == 는 쓸 일도 많이 없거니와 웬만해선 내 의도대로 비교하지 않는다는 걸 명심하자..
- 열거형이 클래스에 종속적일 때(클래스 안에서만 사용할 때)는 클래스 안에서 열거형을 선언한다.
- 열거형의 코드가 길어지면 밖으로 빼는 게 가독성을 높이는 데 더 좋다.
- 코드가 길어도 클래스에 종속적인 걸 강조하고 싶다면 클래스 안에 넣어놓는 것도 방법이다.
- 열거형의 생성자는 private(실제 사용시에는 생략된다, 여담으로 인터페이스는 퍼블릭), 싱글턴 패턴을 사용하며 JVM이 만들어준다.(싱글턴 패턴에 대한 글들을 읽어봤지만 아직 모호하다. 좀 더 공부해야한다.)
- Value Object: equals()와 hashcode()를 오버라이딩하는 데이터를 담는 객체. 값 객체라는 의미를 가진다. 내부에 선언된 속성의 모든 값이 객체마다 같아야 같은 객체라고 판단한다.
Reference
https://velog.io/@minide/Java-VOValue-Object https://elfinlas.github.io/2019/09/23/java-singleton/
Comment
싱글턴 패턴이나 VO같은 키워드는 여러 문서를 읽어봐도 아직 개념만 머리에 둥둥 떠다니고 '그래서 이걸 어디에 어떻게 쓴다고?' 같은 생각이 든다. 공부를 하면서 이런 경험이 많았는데 프로그래밍 공부를 시작한 초반에는 그래도 코드에 바로 적용할 수 있어서 흡수가 빨리 됐는데 점점 개념이 어려워지면서 어떻게 적용을 시켜야 맞는 건지 모를 때가 많아졌다. 이럴 땐 어떻게 공부해야 할까..