JAVA

제네릭 메소드의 멀티 파라미터타입을 사용한 비교

연93 2022. 10. 12. 11:09

 

public class Util {
	//제너릭 메소드 정의 : 다양한 데이타타입들을 사용하고 싶은 경우.
	// 비교목적 : 하나의 데이타타입에 해당하는 의미만 비교목적으로 사용했었는데
	// 제너릭인 경우에는 여러 데이타타입들 비교목적으로 사용가능하다.
	public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) {
		boolean keyCompare = p1.getKey().equals(p2.getKey());
		boolean valueCompare = p1.getValue().equals(p2.getValue());
		
		return keyCompare && valueCompare;
	}
}
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;}
}
public class CompareMethodExample {

	public static void main(String[] args) {
		Pair<Integer, String> p1 = new Pair<>(1, "사과");
		Pair<Integer, String> p2 = new Pair<>(1, "사과");
		
		//명시적 타입파라미터 사용
		boolean result1 = Util.<Integer, String>compare(p1, p2); 
		if(result1) {
			System.out.println("논리적으로 동등한 객체입니다.");
		}else {
			System.out.println("논리적으로 동등하지 않는 객체입니다.");
		}
		
		
		Pair<String, String> p3 = new Pair<String, String>("user1", "김동연");
		Pair<String, String> p4 = new Pair<String, String>("user2", "김동연");
		
		// 타입파라미터 사용생략. (매개변수의 데이터를 보고 타입추정)
		boolean result2 = Util.compare(p3, p4);
		if(result2) {
			System.out.println("논리적으로 동등한 객체입니다.");
		}else {
			System.out.println("논리적으로 동등하지 않는 객체입니다.");
		}
		
		
		// Pair 제네릭 클래스는 타입파라미터에 어떤 타입이든 모두 사용이 가능한 상태.
		// 아래 구문은 모든 데이타타입이 사용가능한 의미로 작성.
		Pair<Double, String> p5 = new Pair<Double, String>(10.5, "테스트");
		Pair<String, String> p6 = new Pair<String, String>("테스트", "테스트");
		Pair<String, Double> p7 = new Pair<String, Double>("테스트", 10.5);
		
	}

}

'JAVA' 카테고리의 다른 글

제네릭 와일드카드 타입  (0) 2022.10.12
제한된 타입 파라미터  (0) 2022.10.12
제네릭 메소드  (0) 2022.10.12
멀티 타입 파라미터  (0) 2022.10.12
컬렉션 프레임웤 TreeMap  (0) 2022.10.11