사용자 도구

사이트 도구


study:java:javachobo:appendix

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판 양쪽 다음 판
study:java:javachobo:appendix [2010/03/19 20:52]
gauryan
study:java:javachobo:appendix [2010/03/19 21:11]
gauryan
줄 1: 줄 1:
 ====== JDK 1.5에 추가된 기능 ====== ====== JDK 1.5에 추가된 기능 ======
 +
 +===== 오토박싱(autoboxing) =====
 +컬렉션에는 객체로 저장해야하기 때문에 기본형 값을 저장하기 위해서는 Integer나 Long과 같은 Wrapper클래스를 사용해야했다. 그러나 이제부터는 기본형 값을 직접 컬렉션에 저장할 수 있다. 컴파일러에 의해서 자동적으로 Wrapper클래스로 변환되어 저장되는
 +
 +===== 향상된 for 문 =====
 +배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for문의 새로운 문법이 추가되었다.
 +<code java>
 +1. 배열
 +    for( 배열의 타입 변수명 : 배열 ) {
 +        // 반복할 문장
 +    }
 +    
 +2. 컬렉션
 +    for( 컬렉션에 저장된 요소의 타입 변수명 : 컬렉션 ) {
 +        // 반복할 문장
 +    }
 +</code>
 +
 +먼저, 정수형 배열이 다음과 같이 선언되어 있다고 가정하자.
 +<code java>
 +int[] arr = {10, 20, 30, 40, 50};
 +</code>
 +
 +아래의 두 for 문은 서로 동일하다.
 +<code java>
 +for(int i=0 ; i < arr.length ; i++) {
 +    System.out.println(arr[i]);
 +}
 +</code>
 +<code java>
 +for(int i : arr) {
 +    // arr[i]가 아닌 i라는 것에 유의
 +    System.out.println(i);
 +}
 +</code>
 +
 +이번엔 ArrayList를 생성하고 다음과 같이 세 개의 Integer객체를 저장하고 각 요소에 접근하기 위해 Iterator를 얻었다.
 +<code java>
 +ArrayList<Integer> list = new ArrayList<Ingeger>();
 +list.add(new Ingerger(10));
 +list.add(new Ingerger(20));
 +list.add(new Ingerger(30));
 +
 +Iterator it = list.iterator();
 +</code>
 +
 +<code java>
 +for(;it.hasNext();) {
 +    System.out.println(it.next());
 +}
 +</code>
 +<code java>
 +for(Integer i : list) {
 +    System.out.println(i);
 +}
 +</code>
 +향상된 for 문은 배열보다는 컬렉션에 저장된 요소에 접근할 때 더욱 코드가 간결해진다는 것을 알 수 있다. 한 가지 주의해야할 점은 향상된 for 문내에서 삭제와 같이 컬렉션을 변경하는 동작을 해서는 안 된다는 것이다.
  
 ===== 제네릭스(Generics) ===== ===== 제네릭스(Generics) =====
줄 95: 줄 152:
 </code> </code>
 <code java> <code java>
-public static <T extends Unit> printAll(ArrayList<T> list, ArrayList<T> list2) {+public static <T extends Unit> void printAll(ArrayList<T> list, ArrayList<T> list2) {
     for(Unit u : list) {     for(Unit u : list) {
         System.out.println(u);         System.out.println(u);
줄 108: 줄 165:
  
 class Unit() {} class Unit() {}
 +class Tank extends Unit {}
 +class Dropship extends Unit {}
 +
 +class GenericsEx1 {
 +    public static void main(String[] args) {
 +        ArrayList<Unit> unitList = new ArrayList<Unit>();
 +        ArrayList<Tank> tankList = new ArrayList<Tank>();
 +        
 +        unitList.add(new Tank());
 +        unitList.add(new Dropship());
 +        
 +        tankList.add(new Tank());
 +        tankList.add(new Tank());
 +        
 +        printAll(unitList);
 +//      printAll(tankList);  // 컴파일 에러가 발생한다.
 +
 +        printAll2(unitList);
 +        printAll2(tankList);
 +    }
 +    
 +    public static void printAll(ArrayList<Unit> list) {
 +        for( Unit u : list ) {
 +            System.out.println(u);
 +        }
 +    }
 +    
 +//  public static void printAll2(ArrayList<? extends Unit> list) {
 +    public static <T extends Unit> void printAll2(ArrayList<T> list) {
 +        for( Unit u : list ) {
 +            System.out.println(u);
 +        }
 +    }
 +}
 </code> </code>
study/java/javachobo/appendix.txt · 마지막으로 수정됨: 2010/03/21 14:48 저자 gauryan