열거형(Enum)
서로 연관된 상수(변하지 않는 값) 들의 집합
enum Seasons { SPRING, SUMMER, FALL, WINTER }
enum Frameworks { DJANGO, SPRING, NEST, EXPRESS }
enum으로 정의한 상수는 switch문에서도 사용이 가능하다
enum은 클래스다
제네릭
타입을 구체적으로 지정하는게 아니라 추후에 지정할 수 있도록 일반화 해두는것
Basket 클래스 내의 T를 String 으로 바꿔라
Basket<String> basket1 = new Basket<String>("기타 줄");
T = 타입 매개변수
클래스 변수(static변수,메서드)에는 타입매개변수를 사용할 수 없다
사용하면 타입이 인스턴스별로 달라져서 같은 변수를 공유하는게 아니게 된다
class Basket<T> {
private T item;
public Basket(T item) {
this.item = item;
}
public T getItem() {
return item;
}
public void setItem(T item) {
this.item = item;
}
}
<> 안에 Integer를 넣어 인스턴스화 하면 T들이 모두 Integer로 치환된다
Integer: int
Double: double
Boolean: boolean
Character: char
Byte: byte
Short: short
Long: long
Float: float
래퍼클래스 : 프리미티브 데이터 타입을 객체로 감싸서 프리미티브 데이터타입을 객체로 다룰수 있도록 해준다
int : 값 자체를 나타내는 프리미티브 데이터 타입
Integer : int를 객체로 래핑한 래퍼 클래스
클래스 전체를 제네릭으로 선언할 수 도 있지만 내부의 특정 메서드만 제네릭으로 선언 할 수도 있다
제네릭 메서드
class Basket<T> { // 1 : 여기에서 선언한 타입 매개 변수 T와
...
public <T> void add(T element) { // 2 : 여기에서 선언한 타입 매개 변수 T는 서로 다른 것입니다.
...
}
}
제네릭메서드의 타입 매개변수선언은 반환타입 앞에서 이루어지며 해당 메서드 내에서만 선언한 타입 매개변수를 이용할 수 있다
제네릭 메서드의 타입매개변수는 제네릭 클래스의 타입매개변수와 별개의 것
타입 지정되는 시점이 다르기때문
클래스명 앞 에서 선언할 때는 클래스가 인스턴스화 될때 타입지정
제네릭메서드의 타입지정은 메서드가 호출될 때 이루어진다
class Basket {
...
static <T> int setPrice(T element) {
...
}
}
메서드타입 매개변수는 static메서드에서도 선언가능
와일드카드
어떠한 타입으로든 대체될 수 있는 타입 파라미터
extends와 super를 조합하여 사용
<? extends T> //상한제한 T와 T를 상속받는 하위 클래스타입만 타입파라미터로 받을 수 있음
<? super T> //하한제한 T와 T의 상위 클래스타입만 타입파라미터로 받을 수 있음
컬렉션 프레임워크
컬렉션(집합)을 다루는데 있어 편리한 메서드를 미리 정의 해 놓은 것
List : 데이터의 순서 유지 중복저장 가능
Set : 데이터의 순서 x 중복저장 불가능
Map : 키와 값의 쌍으로 데이터를 저장 순서유지 x 키는 중복저장 불가능 값은 중복저장가능
List와 set의 공통점을 추출해 추상화 한 것이 Collection이다
ArrayList
List 인터페이스를 구현한 클래스
LinkedList
데이터의 잦은변경 LinkedList
개수가 변하지 않는다면 ArrayLive
Iterator
컬렉션에 저장된 요소를 순차적으로 읽어오는 역할
'개발공부🌷 > JAVA' 카테고리의 다른 글
JAVA 심화 애너테이션 , 람다 , 스트림 (0) | 2023.11.02 |
---|---|
JAVA 예외처리 (0) | 2023.11.01 |
JAVA 기초11-1 객체지향프로그래밍 심화 (0) | 2023.10.26 |
JAVA 기초 11 객체지향프로그래밍 심화 (0) | 2023.10.25 |
JAVA기초 10-1 객체지향프로그래밍 심화 (0) | 2023.10.24 |