WEB/Java

Generic

hwahaha 2023. 10. 26. 16:32

제네릭

클래스나 메소드에 사용될 데이터 타입나중에 확장하는 것

 

기본적인 사용법

클래스

class Animal<T> {
    private T info;
    
    Animal(T info){
        this.info=info;
    }

    public T getInfo() {
        return info;
    }

    public void setInfo(T info) {
        this.info = info;
    }
}
public class Main{
    public static void main(String[] args) {
        Animal<String> animal=new Animal<String >("너구리");
    }
}

 

메소드

public  static <T> void swap(T a,T b){
        T c=a;
        a=b;
        b=c;
    }

 

참고로

T 자리에는 참조형만 올 수 있다 !!!

int, char ,, 안됨, wrapper 사용해야함

 

 

사용하는 이유 

1. 코드의 중복을 제거 -편의성을 위해

2. 타입이 안전하지 않은 경우  -Object 지정시

 

그외에도 여러 이유로 데이터 타입을 확정시키고 싶지 않은 경우 .. 

 

가능한 데이터 타입을 제한하고 싶을 때

extends 사용

-class 클래스명<T extends 클래스나 인터페이스>

super 사용

-부모를 제한 하는 것 ..