자바에서는 다양한 객체를 저장해야 하는 경우가 아주 많다! 그렇기 때문에 타입을 동적으로 정해야한다. 자바의 Colletions API를 이용하면 객체의 집합을 관리할수있다.
Java 1.5부터는 Generic을 도입해서 임의의 타입을 사용하는것을 가능하게 해주었는데 이를 통해 사용 시점에 다양한 Type의 객체를 담을수가 있는것이다.
- Collection Interface Hierarchy를 보면 인터페이스와 인터페이스간 상속이 가능한것을 알 수 있다.
- 대부분의 Collection Class들은 Iterator를 구현하고 있어서 각각의 Collection 객체에 접근할때는 iterator 메소드를 통해 접근할 수 있다.
package com.collection;
import com.abst.Circle;
//런타임(실행)시에 데이터의 타입을 임의로 정하도록 유연성을 주는 방식.
public class GenericTest<X> {
private int num;
private X what;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public X getWhat() {
return what;
}
public void setWhat(X what) {
this.what = what;
}
public static void main(String[] args) {
GenericTest<String> t1 = new GenericTest<String>();//뒤에나오는 제네릭 타입 생략 가능
GenericTest<Integer> t2 = new GenericTest<>();
GenericTest<Circle> t3 = new GenericTest<>();
}
}
Exception 처리
RuntimeException 과 Other Exceptions로 구분되는데 Non-RuntimeExeption은 컴파일 자체가 안돼기 때문에 반드시 예외처리를 해줘야된다. (Non-RuntimeExeption 에서 대표적으로 InterruptedException 이 있다)
개인적으로 예외처리에서 헷갈렸던 부분이 throws와 throw였다. throws는 호출자에게 예외 처리를 위임해주는것이다. throw는 new Exception을 발생시키는것이다!! 이때 throws로 예외 처리를 위임해줄경우 상위 코드에서 이를 반드시 처리해줘야한다.
즉 이러한 Call Chain 관계에서는 어떤 함수가 throws를 하고 주체가 누가 되어 예외를 핸들링을 할것인지에 대한 설계가 필요한것이다.