Java

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() );
    }
}

[끝]