문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
프로그램:java:ㄴhomework:book_source:ch14 [2022/01/05 16:17] clayeryan@gmail.com |
프로그램:java:ㄴhomework:book_source:ch14 [2025/06/27 16:07] (현재) |
||
|---|---|---|---|
| 줄 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; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Share Alike 4.0 International