문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
프로그램:java:ㄴhomework:book_source:ch14 [2022/01/05 16:17] clayeryan@gmail.com |
프로그램:java:ㄴhomework:book_source:ch14 [2023/07/13 17:29] (현재) clayeryan@gmail.com ↷ 문서가 programmer:java:ㄴhomework:book_source:ch14에서 프로그램:java:ㄴhomework:book_source:ch14(으)로 이동되었습니다 |
||
---|---|---|---|
줄 211: | 줄 211: | ||
<code java> | <code java> | ||
+ | package chapter14; | ||
+ | |||
+ | import java.util.ArrayList; | ||
+ | import java.util.List; | ||
+ | |||
+ | public class MemberGeneric { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | // Member 제네릭을 사용한 경우 | ||
+ | List< | ||
+ | |||
+ | Member mem1 = new Member(); | ||
+ | mem1.setName(" | ||
+ | mem1.setId(" | ||
+ | mem1.setPassword(" | ||
+ | mem1.setAge(40); | ||
+ | |||
+ | list.add(mem1); | ||
+ | |||
+ | Member mem2 = new Member(); | ||
+ | mem2.setName(" | ||
+ | mem2.setId(" | ||
+ | mem2.setPassword(" | ||
+ | mem2.setAge(50); | ||
+ | |||
+ | list.add(mem2); | ||
+ | |||
+ | Member mem3 = new Member(); | ||
+ | mem3.setName(" | ||
+ | mem3.setId(" | ||
+ | mem3.setPassword(" | ||
+ | mem3.setAge(60); | ||
+ | |||
+ | list.add(mem3); | ||
+ | |||
+ | // 리스트 갯수 | ||
+ | System.out.println(" | ||
+ | |||
+ | // 모든 리스트의 요소(Member) 출력 | ||
+ | for (int i=0; i< | ||
+ | System.out.println(" | ||
+ | +", | ||
+ | +", | ||
+ | +", | ||
+ | +", | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
</ | </ | ||
<code java> | <code java> | ||
+ | package chapter14; | ||
+ | public class GenericEx3 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | Generic2< | ||
+ | gen1.set(" | ||
+ | // gen1.set(" | ||
+ | |||
+ | System.out.println("< | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | Generic2< | ||
+ | gen2.set(" | ||
+ | System.out.println("< | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | class Generic2< | ||
+ | K name; | ||
+ | V id; | ||
+ | |||
+ | void set(K name, V id) { | ||
+ | this.name = name; | ||
+ | this.id = id; | ||
+ | } | ||
+ | |||
+ | K getName() { | ||
+ | return name; | ||
+ | } | ||
+ | |||
+ | V getId() { | ||
+ | return id; | ||
+ | } | ||
+ | } | ||
</ | </ | ||
<code java> | <code java> | ||
+ | package chapter14; | ||
+ | |||
+ | import java.util.HashMap; | ||
+ | import java.util.Map; | ||
+ | |||
+ | public class HashMapEx { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | Map< | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | |||
+ | System.out.println(hm.get(" | ||
+ | System.out.println(hm.get(" | ||
+ | System.out.println(hm.get(" | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
</ | </ | ||
<code java> | <code java> | ||
+ | package chapter14; | ||
+ | |||
+ | import java.util.ArrayList; | ||
+ | import java.util.HashMap; | ||
+ | import java.util.List; | ||
+ | import java.util.Map; | ||
+ | |||
+ | public class GenericEx4 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | List< | ||
+ | |||
+ | Map< | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | list.add(hm); | ||
+ | |||
+ | hm = new HashMap< | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | list.add(hm); | ||
+ | |||
+ | hm = new HashMap< | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | hm.put(" | ||
+ | list.add(hm); | ||
+ | |||
+ | for (int i=0; i< | ||
+ | System.out.println(" | ||
+ | +", | ||
+ | +", | ||
+ | +", | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
</ | </ | ||
+ | |||
+ | <code java> | ||
+ | package chapter14; | ||
+ | |||
+ | public class GenericEx5 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | Gen3 g3 = new Gen3(); | ||
+ | |||
+ | // Gen2의 상위 클래스 제네릭 선언 가능 | ||
+ | Generic5<? | ||
+ | // Gen2 t1 = g2.get(); // 에러 Gen2는 Gen2의 부모클래스가 아님 | ||
+ | // Gen3 t1 = g2.get();// 에러 Gen3은 Gen2 의 부모클래스가 아님 | ||
+ | |||
+ | Gen1 t2 = (Gen3)g2.get(); | ||
+ | Object t1 = g2.get(); // Object는 최상위 클래스이기 때문에 가능 | ||
+ | |||
+ | System.out.println(t2.name); | ||
+ | System.out.println(t2.getName()); | ||
+ | |||
+ | // Gen2의 하위 클래스 제네릭 선언 가능 | ||
+ | Generic5<? | ||
+ | Gen2 t3 = g4.get(); // Gen2 자신도 포함 | ||
+ | Gen3 t4 = (Gen3)g4.get(); | ||
+ | |||
+ | // <?> 모든 클래스 타입 가능 | ||
+ | Generic5<?> | ||
+ | Object t5 = g6.get(); | ||
+ | Gen3 t6 = (Gen3)g6.get(); | ||
+ | |||
+ | // 정수도 가능 | ||
+ | Generic5<?> | ||
+ | System.out.println(g7.get()); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | class Gen1 { | ||
+ | String name = " | ||
+ | |||
+ | String getName() { | ||
+ | return name; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | class Gen2 extends Gen1 { | ||
+ | String name = " | ||
+ | |||
+ | String getName() { | ||
+ | return name; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | class Gen3 extends Gen2 { | ||
+ | String name = " | ||
+ | |||
+ | String getName() { | ||
+ | return name; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | class Generic5< | ||
+ | T obj; | ||
+ | |||
+ | Generic5(T obj) { | ||
+ | this.obj = obj; | ||
+ | } | ||
+ | void set(T obj) { | ||
+ | this.obj = obj; | ||
+ | } | ||
+ | T get() { | ||
+ | return obj; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ |