programming/java

20. Generic Classes and Methods

클래스 변수


static인 이유?

인스턴스 생성과 관계없이 제일 먼저 호출되는 method라서


public인 이유?

main method의 호출 명령은 외부로부터 시작되는 명령이다.

일종의 약속으로 이해하자





Generic이 갖는 의미는 '일반화'이다.





[arrays]

Enhanced for Loop

for-each loop라고도 한다.


장점

ㆍ 코드의 양이 확 준다.

ㆍ 반복문 구성 과정에서 배열의 길이 정보를 직접 확인하고 입력할 필요가 없다.


for(요소 : 배열) {

반복할 문장들

}



컬렉션 프레임 워크

컬렉션 프레임워크의 대부분의 클래스들은 싱글 스레드 환경에서 사용할 수 있도록 설계되었다. 그래서 여러 스레드가 동시에 컬렉션에 접근한다면 의도하지 않게 요소가 변경될 수 있는 불안전한 상태가 된다.


synchronized method : Vector, Hashtable

not synchronized method : ArrayList, HashSet, HashMap


경우에 따라서 위 aayalist, ahsset, hasmamp 을 싱글 스레드 환경에서 사용하다가 멀티 스레드 환경으로 전달할 필요도 있을 것이다. 이런 경우에 대비해서 컬렉션 프레임웍은 비동기화된 메소드를 동기화된 메소드로 래핑하는 Collections의 synchronizedXXX() 메소드를 제공하고 있다. 매개값으로 비동기화된 컬렉션을 대입하면 동기화된 컬렉션을 리턴한다.



fill(), copy(), sort(List DataType), binarySearch()


Collections class : 정렬이라던지 여러가지 데이터와 관련된 작업을 하도록 도와주는 메소드들이 있다 그 메소드들은 전부 static이기 때문에 인스턴스를 만들 필요 없이 .메소드명으로 바로 호출가능하다



type safety 가 낮다


컴파일 과정에서 오류가 발견되게끔 코딩을 해야 한다



제네릭의 사용 이유


타입이 안전하지 않다