Enum = Enumeration, 열거형이라고 보통 말한다.
어떤 상황에 쓰이는 건지 이해가 조금 어려웠는데 검색해보니 사용처에 따라서 의미가 변하는 듯하다.
내가 이해한게 맞다면
Enum은 1. 같은 자료형을 갖는 2. 자주 사용될 변수들의 집합인데 3. 안에 변수명과 값을 정의할 수 있다.(ex. 요일, 계절 등)
final과는 달리 수정이 필요한 객체를 선언할 때 편하게 사용할 수 있다.
public Enum operator {
ADD('+'),
SUB('-'),
MUL('*'),
DIV('/'),
MOD('%'),
SQU('^');
}
이런 식으로 연산자를 명(값) 형태로 한번에 정리할 수 있어서 필요한 것만 꺼내 쓸 수 있다.
Enum을 사용하면 불필요한 코드를 줄이고 인스턴스를 따로 관리할 수 있어서 불필요한 접근을 막을 수 있다.
그러나 아직 완전히 이해한게 아니라서 자주 써봐야 알 수 있겠다.(→ 과제에 적용해보겠음)
➕ 개념을 이해하는데 굉장히 도움이 된 글과 영상이 있어서 아래 링크로 추가했음.
Post. 열거형 이해하기
(Advanced)Post. Java Enum 활용기
Video. 6분으로 설명하는 Java Enum
코드를 짜다보면 형 변환을 자주 사용하게 되는데, 이중으로 해야 할 때도 발생하곤 한다.(계산기 과제를 자율적으로 하며 경험한... String → int → String처럼 했던 변환 또 하기)
그럴 때 쓰기 좋은게 바로 이 제너릭이다.
제너릭은 변수의 타입을 지정하지 않고 변수가 입력되는(사용되는) 시점에 유연하게 타입을 정할 수 있는 문법이다. 변수를 재사용할 수 있다는 점에서 유용하게 사용된다.
→ 과제에서 사용한 ArrayList은 제너릭 문법 방식으로 문자열 타입을 지정해 놓은 거고, ArrayList는 T가 실제로 입력되는 데이터 타입이 되는 거다.(범위와 유연성의 차이)
컬렉션에서 List를 공부할 때 뭣도 모르고 잘 썼던 건데 새로운 개념으로 받아들여서 이해하기 어려웠다. 비유하자면 이동수업으로 옆 반에 항상 앉던 자리의 주인이랑 갑자기 통성명한 느낌? 그냥 자리로 앉았을 땐 아무 느낌이 없었지만 그 자리도 주인이 있다는 걸 갑자기 깨달은 감상이었다.
아무래도 하나의 문법이기 때문에 여러가지 활용 방법과 메서드가 있다.
➕ 사용방법이 자세히 설명되어있는 글을 참고했다.
제네릭의 이해
이름처럼 간단한 연산작업을 한줄로 흐르듯이 쓰는 문법이다. 변수를 선언하듯 간단한 코드로 데이터를 효율적으로 처리할 수 있다. 그리고 가독성이 뛰어나다는 장점도 있는데
[ 데이터 준비(보통 stream) . 중간연산 . 최종연산 ]
형태로 처음엔 익숙하지 않았지만 과제를 하면서 끊어 읽는게 익숙해져서 가독성을 장점으로 뽑는 이유를 알게 되었다. 안에 사용되는 메서드가 무슨 동작을 하는지만 안다면(@_@;) 금방 문장을 이해할 수 있다.