JAVA

Java Class 클래스, java.util 패키지, 제네릭<>

서묘_ 2021. 12. 22. 19:57

Class 클래스

Class.forName()메서드로 동적 로딩(Dynamic Loding)하기

클래스명을 변수로 지정해 놓고 실행 시 해당 변수에 대입된 클래스가 실행될 수 있도록하는

Class에서 제공하는 Static메서드

 

어떤 클래스를 사용할 지 모를때 주로 사용하며 모든 클래스를 다 올리지 않고 필요할 때 꺼내쓸 수 있다는 장점이있다.

 

ex)

String className = "classex.Person"
Class pClass = Class.forName(className);

 

 

java.util 패키지(https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/package-summary.html)

자바 개발에 필요한 도구성 클래스드를 모아둔 패키지

Java Collections Framework : 객체들을 모아서 저장하는 공간

말 그대로 프레임이라는 틀 안에서 작업하고 방식은 interface에 명시

 

꼭 기억할 것

List : 저장되는 순서 유지(인덱스), 중복 값o, 크기 고정x

Set : 저장되는 순서 유지x, 중복 값x

Map : key-value, 한쌍(entry)으로 저장하고 key를 이용해 연결된 value를 가져온다.

       저장되는 순서 유지x, key 중복x, value 중복o

 

 

제네릭<타입>

컬렉션에 저장되는 데이터 타입을 지정할 때 사용.

기본형 타입은 사용 불가, 참조형 타입만 사용 가능.

 

List<String> list = new ArrayList<String>();

List<String> list = new ArrayList<>(); //오른쪽<타입>은 <>로 대체 가능하다.

이렇게 지정하면 list에는 String타입만 저장 가능하다.

list.get(0);

당연히 가져올 때 따로 보지 않아도 String타입만 나온다.

 

제네릭을 꼭 지정하지 않아도 선언할 수 있지만 객체라면 타입과 상관없이 다 저장되기 때문에

가져올 때 타입맞추려면 instanceOf를 계속 사용해줘야한다.

 

타입 종류

E : element 컬렉션 안에 저장될 요소의 타입 지정

K : key 의 타입 지정

V : value 의 타입 지정

T : type (static 타입 불가)

 

제네릭 와일드카드

<?> : 제한 없음

<? extends T> : T와 그 sub를 구현한 객체들

<? super T> : T오 그 super를 구현한 객체들