• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    C++ 프로그래머 Java 맛보기 #27
    Last Modify : 13 January, 2011(01:13)
    이번엔 제네릭 메소드와 생성자에 대해서 이야기 하겠다. 제네릭은 생성자에서 받을 수도 있지만 각 각의 메소드에서도 설정이 가능하다 public <U> void inspect(U u) 를 보게 되면 <U> 로 설정한 제네릭을 볼 수 있는데 이를 실행하였을 경우 다음과 같은 결과를 얻을 수 있다. /** * This version introduces a generic method. */ public class Box<T> {     private T t;             public void add(T t) {         this.t = t;     }     public T get() {         return t;     }     public <U> void inspect(U u){         System.out.println("T: " + t.getClass().getName());         System.out.println("U: " + u.getClass().getName());     }     public static void main(String[] args) {         Box<Integer> integerBox = new Box<Integer>();         integerBox.add(new Integer(10));         integerBox.inspect("some text");     } } 결과 : T: java.lang.Integer U: java.lang.String 이렇게 결과 값이 나온느 이유는 먼저 인스턴스를 할 때 Integer 를 지정하였기 때문에 T: 에서 출력하는 t.getClass().getName() 으로 Integer 가 출력이 되었고 inspect 를 호출하면서 "some text" 로 입력하여 String 형태에 인자가 전달되었으므로 u.getClass().getName() 으로 String 이 출력 된 것이다. 위의 클래스에 다음과 같은 메소드를 추가해본다. public static <U> void fillBoxes(U u, List<Box<U>> boxes) {     for (Box<U> box : boxes) {         box.add(u);     } } 해당 클래스는 입력되는 여러 박스에 u 를 채우는 역활을 하게 될 것이다. 채울 것을 다음처럼 크레용으로 지정하고 진행을 해보도록 하자. 박스 역시 크래용 박스라고 가정하자 초딩 때 사용하던 크래용 박스들은 모두들 기억을 할 것이다. 일렬로 나열되어 있는 여러 색색으 크래용이다. Crayon red = ...; List<Box<Crayon>> crayonBoxes = ...; 하지만 한가지 색으로 크래용 박스에 모두 채운다면 다음처럼 코드를 하면 되겠다. Box.<Crayon>fillBoxes(red, crayonBoxes);

    Comment


    입력하3 1498665054



    Locations of visitors to this page