[Java] 제네릭 클래스, Generic

수경·2023년 8월 10일
0
post-thumbnail

제네릭이란

  • 클래스를 정의할 때, 구체적인 타입(type)을 적지 않고 변수 형태로 적어 놓는 것
  • 클래스, 메소드에서 사용할 데이터 타입을 나중에 확정하는 기법이다.
  • 클래스나 메소드를 선언할 때가 아닌 사용할 때, 즉 인스턴스를 생성할 때나 메소드를 호출할 때 정한다는 의미이다.

작성 방법

  • T: 타입 변수(메소드의 매개변수 역할) > 자료형을 전달하는 변수, 자료형 그 자체 / 보통 대문자 한글자로 작성
  • <>: 인자 리스트(메소드의 () 역할)

기본 코드 예제

메인클래스

public class Ex57_Generic {
	public static void main(String[] args) {
		WrapperInt n1 = new WrapperInt(100);
		System.out.println(n1.toString());
		System.out.println(n1.getData() * 2);
		System.out.println();
	}
}

int형을 매개변수로 받는 클래스

class WrapperInt {
	private int data;	//1. 클래스 중심
	
	//2. data 중심
	public WrapperInt(int data) {
		this.setData(data);
		
	}
	public int getData() {
		return data;
	}

	public void setData(int data) {
		this.data = data;
	}
	@Override
	public String toString() {
		return "[data=" + data + "]";
	}
}

제네릭 클래스 예제 코드

메인클래스

public class Ex57_Generic {
	public static void main(String[] args) {
		//다양한 자료형으로 활용 가능하다.    	
		Wrapper<String> s3 = new Wrapper<String>("이순신");
		System.out.println(s3.toString());
		System.out.println(s3.getData().length());
		
		Wrapper<Boolean> b3 = new Wrapper<Boolean>(true);
		System.out.println(b3.toString());
		System.out.println(b3.getData() ? "참" : "거짓");
	}
}

		

제네릭 클래스


class Wrapper<T> {
	private T data;
	
	public Wrapper(T data) {
		this.data = data;
	}

	public T getData() {
		return data;
	}

	public void setData(T data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return "Wrapper [data=" + data + "]";
	}
}
profile
웹백엔드개발자를 꿈꾸는

0개의 댓글