본문 바로가기

Java/본격 Java 컬렉션

[Java] 제네릭 메소드

class Aa{
	public String toString() { return "Class Aa"; }
}
class Bb{
	public String toString() { return "Class Bb"; }
}
class InstanceShower{
	int showCnt = 0;
	public <T> void showInstType(T inst){
		// 메소드 호출시 T에 대한 자료형을 지정하면 매개변수의 T를 지정하게 됨
		System.out.println(inst);
		showCnt++;
	}
	void showPrintCnt(){ System.out.println("show count : " + showCnt); }
}

class GenericMeathod{
	public static void main(String[] args) {
		Aa a = new Aa();
		Bb b = new Bb();
		InstanceShower shower = new InstanceShower();
		shower.<Aa>showInstType(a);
		// 매개변수의 자료형을 Aa클래스로 지정
		shower.showInstType(a);
		// 제네릭을 생략할 수도 있는데 매개변수의 자료형을 근거로 판단하는 것
		shower.<Bb>showInstType(b);
		// 매개변수의 자료형을 Bb클래스로 지정
		shower.showInstType(b);
		shower.showPrintCnt();
	}
}

앞에서 했던 제네릭을 한 번 더 실습해보자

.

.

제네릭표현을 추가하여 자료형을 받아 실행할 수 있다.

.

.

하지만 제네릭표현을 생략하고 사용해도 무방하다.

.

.

class Aa{
	public String toString() { return "Class Aa"; }
}
class Bb{
	public String toString() { return "Class Bb"; }
}
class InstanceShower2{
	public <T, U> void showInstType(T inst1, U inst2){
		System.out.println(inst1);
		System.out.println(inst2);
	}
}

class GenericMeathod2{
	public static void main(String[] args) {
		Aa a = new Aa();
		Bb b = new Bb();
		InstanceShower2 shower = new InstanceShower2();
		shower.<Aa, Bb>showInstType(a, b);
		shower.showInstType(a, b);
		// 2개 이상을 사용해도 생략 가능
	}
}

.

.

심지어 2개이상 사용해도 상관없다.

728x90
반응형

'Java > 본격 Java 컬렉션' 카테고리의 다른 글

[Java] LinkedList  (0) 2020.07.03
[Java] ArrayList  (0) 2020.07.03
[Java] 컬렉션 프레임워크(Collection Framework)  (0) 2020.07.03
[Java] 제네릭(Generic) 심화  (0) 2020.07.03
[Java] 제네릭 클래스 - 과일상자 실습  (0) 2020.07.03