JAVA

제네릭 메서드 예제 (태그 설명)

연93 2022. 9. 29. 12:55
package sec04_exam02_generic_method;

public class Pair<K, V> {
	
	private K key;
	private V value;
	
	public Pair(K key, V value) {
		this.key = key;
		this.value = value;
	}
	public void setKey(K key) { this.key = key; }
	public void setValue(V value) {this.value = value; }
	public K getKey() { return key; }
	public V getValue() { return value; }
}
package sec04_exam02_generic_method;

public class Utill {
	//제너릭 메소드 정의 : 다양한 데이터 타입을 사용하고 싶은경우 (여기선 compare 메소드)
	//boolean = 리턴타입 , compare = 메소드명()
	//비교목적: 하나의 데이터타입에 해당하는 의미만 비교목적으로 사용했었는데
	//제너릭인 경우에는 여러 데이터타입들 비교 목적으로 사용 가능하다 (코드의 간소화)
	//제너릭이 없을경우 경우의 수만큼 코드를 만들어서 사용해야한다.
	public static <K, V> boolean compare(Pair<K, V> p1,Pair<K, V> p2) {
		boolean keyCompare = p1.getKey().equals(p2.getKey());
		boolean valueCompare = p1.getKey().equals(p2.getKey());
		
		return keyCompare && valueCompare;
	}
}
package sec04_exam02_generic_method;

public class CompareMethodExample {

	public static void main(String[] args) {
		//p1,p2는 힙영역 기억장소에 생성된 객체가 다르므로 주소가 다르다.
		//Pair<Integer, String> p1 = new Pair<Integer, String>(1, "사과");
		//뒷쪽 타입 파라미터는 생략가능
		Pair<Integer, String> p1 = new Pair<>(1, "사과");
		Pair<Integer, String> p2 = new Pair<>(1, "사과");
		
		boolean result1 = Utill.<Integer, String>compare(p1, p2);
		if(result1) {
			System.out.println("논리적으로 동등한 객체입니다.");
		}else {
			System.out.println("논리적으로 동등하지 않은 객체입니다.");
		}
		
		Pair<String, String> p3 = new Pair<String, String>("user", "홍길동");
		Pair<String, String> p4 = new Pair<String, String>("user2", "홍길동");
		boolean result2 = Utill.<String, String>compare(p3, p4);
		if(result2) {
			System.out.println("논리적으로 동등한 객체입니다.");
		}else {
			System.out.println("논리적으로 동등하지 않은 객체입니다.");
		}
	}
}
// Pair 제네릭 클래스는 타입파라미터에 어떤 타입이든 모두 사용이 가능한 상태.
// 아래 구문은 모든 데이터타입이 사용 가능하다.
Pair<Double, Long>   p5 = new Pair<Double, Long>(10.5, "테스트");
Pair<String, String> p6 = new Pair<Double, Long>("테스트", "테스트");
Pair<String, Double> p7 = new Pair<Double, Long>("테스트", 10.5);

'JAVA' 카테고리의 다른 글

Object 클래스 객체 해시코드(hashCode())  (0) 2022.10.07
Object 클래스 equals메소드  (0) 2022.10.07
제네릭 메서드  (0) 2022.09.29
제네릭 멀티 타입 파라미터  (0) 2022.09.29
제네릭 타입  (0) 2022.09.29