1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | package kr.or.ddit.basic; class Util { /** * 제너릭 메서드<T,R> R method(T t) * * 파라미터 타입과 리턴타입으로 타입 파라미터를 가지는 메서드 * 선언방법 : 리턴타잎 앞에 <> 기호를 추가하고 타입 파라미터를 기술 후 사용함. * * @param p1 * @param p2 * @return */ 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; } } /** * 멀티타입 <K, V> 을 가지는 제너릭 클래스 * * @param <K> * @param <V> */ class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { super(); this.key = key; this.value = value; } public K getKey() { return key; } public void setKey(K key) { this.key = key; } public V getValue() { return value; } public void setValue(V value) { this.value = value; } // 키와 값 출력하는 메서드 public <K, V> void displayAll(K key, V value) { System.out.println(key.toString() + " : " + value); } } public class T02_GenericMethodTest { public static void main(String[] args) { Pair<Integer, String> p1 = new Pair<Integer, String>(1, "홍길동"); Pair<Integer, String> p2 = new Pair<Integer, String>(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>("001", "홍길동"); Pair<String, String> p4 = new Pair<String, String>("002", "홍길동"); boolean result2 = Util.compare(p3, p4); if (result2) { System.out.println("논리적(의미)으로 동일한 객체"); } else { System.out.println("논리적(의미)으로 동일한 객체아님"); } // 제너릭 메서드 호출 p1.<String, Integer>displayAll("키값", 1234); } } | cs |
'HighJava' 카테고리의 다른 글
18.Enum (0) | 2020.09.18 |
---|---|
17_Bounded Type Parameter(제한된 타입 파라미터) (0) | 2020.09.17 |
15_Generics (0) | 2020.09.17 |
14_Args_가변형 인수 (0) | 2020.09.17 |
13_Properties (0) | 2020.09.17 |