붓, 그리다
제너릭의 종류 2.1) 와일드 카드 <?> 본문
<?>
- 아직 자료형이 정해져 있지 않다(=Object)
- 전달받은 자료형으로 대신 사용(String -> <String>)
- <? extends Object>와 동일
-> 자바에서 만드는 클래스의 부모는 무조건 Object이기 때문에 제한이 없다.
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 | package j0620; // <?> 와일드 카드를 이용한 제너릭 방법 // 메소드 호출시 매개변수 값을 전달 import java.util.*; public class WileTest { public static void main(String[] args) { // TODO Auto-generated method stub // 1) 문자열을 저장 List<String> list=new ArrayList(); list.add("테스트1"); list.add("테스트2"); list.add("테스트3"); //정적메소드 호출 printData(list); // 2) 정수형 저장 List<Integer> list2=new ArrayList(); list2.add(100); list2.add(200); list2.add(new Integer(300)); //정적메소드 호출 printData2(list2); // 3) 실수형 저장 List<Double> list3=new ArrayList(); list3.add(12.5); list3.add(45.6); list3.add(78.9); //정적메소드 호출 printData3(list3); } // 문자열을 입력을 받아서 처리해주는 메서드 작성 -> 반환형 X, 매개변수 O public static void printData(List <String> list) { // List -> 인터페이스 for(String obj:list) System.out.println(obj);// obj.toString() } // 정수형 public static void printData2(List <Integer> list) { for(Integer obj:list) System.out.println(obj); } // 실수형 public static void printData3(List <Double> list) { for(Double obj:list) System.out.println(obj); } } | cs |
-> <String>, <Integer>, <Double> 등 자료형에 맞는 메서드를 일일히 작성하면 코딩의 향이 증가되고 중복된 코드도 증가한다
=> 이를 해결하기 위해 어떠한 자료형이든 다 처리해줄 수 있는 제너릭이 와일드카드이다 <?>
EX) 매개변수를 전달받을 때 자료형을 그때 그때마다 바뀔 수 있다.
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 | package j0620; import java.util.*; public class WileTest { public static void main(String[] args) { // TODO Auto-generated method stub // 1) 문자열을 저장 List<String> list=new ArrayList(); list.add("테스트1"); list.add("테스트2"); list.add("테스트3"); //정적메소드 호출 printData(list); // 2) 정수형 저장 List<Integer> list2=new ArrayList(); list2.add(100); list2.add(200); list2.add(new Integer(300)); //정적메소드 호출 printData(list2); // 3) 실수형 저장 List<Double> list3=new ArrayList(); list3.add(12.5); list3.add(45.6); list3.add(78.9); //정적메소드 호출 printData(list3); } // <?> 메소드 public static void printData(List <?> list) { for(Object obj:list) // 어떤 자료형이든 받아야하기에 Object형 System.out.println(obj); } | cs |
'JAVA > Basic' 카테고리의 다른 글
제너릭의 종류 2.3) 와일드 카드 <? super T> (1) | 2017.06.20 |
---|---|
제너릭의 종류 2.2) 와일드 카드 <? extends T> (1) | 2017.06.20 |
제너릭의 종류 1) Class 클래스명<T>{} (0) | 2017.06.20 |
제너릭 Genrics 개요 (0) | 2017.06.20 |
컬렉션 ★★ (0) | 2017.06.19 |
Comments