Copyright (c) 2015-, All Rights Reserved by Kwanghoon Choi
(아래 자바 프로그래밍 강의 교재의 내용을 자유롭게 이용하되 다른 웹 사이트 등을 통한 배포를 금합니다.)
4. 예제
package com.example.java;
class Box<T> {
private T element;
public void put(T element) {
this.element = element;
}
public T get() {
return element;
}
}
public class GenericTest {
public static void main(String[] args) {
Box<String> strBox = new Box<String>();
strBox.put( "hello" );
Box <Integer> intBox = new Box<Integer>();
intBox.put( 123 );
Box<Object> objBox = new Box<Object>();
objBox.put( new Object() );
printElement(strBox);
printElement(intBox);
printElement(objBox);
writeString( strBox, "world" );
// writeString( intBox, "world" ); // 컴파일 에러
writeString( objBox, "world" );
copy ( objBox, strBox );
copy ( objBox, intBox );
// copy ( intBox, strBox ); // 컴파일 에러
// copy ( strBox, intBox ); // 컴파일 에러
}
static void printElement(Box<? extends Object> c) {
Object elem = c.get();
System.out.println(elem.toString());
}
static void writeString(Box<? super String> c, String s) {
c.put( s );
}
static <T> void copy( Box<T> dst, Box<? extends T> src ) {
dst.put( src.get() );
}
}
[끝]