본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

제한된 제네릭 클래스 <T extends *>

제한된 제네릭 클래스

특정타입, 특정타입의 하위클래스만을 허용하는 제네릭 클래스

프로그래머가 원치않는 타입의 입력을 방지할 수 있고 이를통해 더욱 제한적이고 안전하게 사용할 수 있게 된다.

 

 

Number클래스를 상속받은 클래스만을 허용하는 T의 NumberBox란 클래스가 있다고 가정해보자.

class NumberBox<T extends Number> {
    private T content;

    public NumberBox(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

 

 

 

NumberBox 클래스를 사용할때는 정수, 실수와 같은 숫자타입만을 넣을 수 있게된다.

public class Main {
    public static void main(String[] args) {
        NumberBox<Integer> intBox = new NumberBox<>(10); // Integer를 저장하는 상자
        NumberBox<Double> doubleBox = new NumberBox<>(3.14); // Double을 저장하는 상자

        // NumberBox<String> stringBox = new NumberBox<>("Hello"); // 에러: String은 Number를 상속받지 않음

        System.out.println("Integer content: " + intBox.getContent()); //Integer content: 10
        System.out.println("Double content: " + doubleBox.getContent()); //Double content: 3.14
    }
}