문서의 이전 판입니다!
package chapter14; public class GenericEx { public static void main(String[] args) { NoGeneric nogen = new NoGeneric(); String[] ss = {"홍길동","이순신","김유신"}; // Object 타입의 매개변수에 String 배열객체 전달 nogen.set(ss); nogen.print(); Object[] objs = nogen.get(); for(Object o : objs) { String s = (String)o; // String으로 강제형변환 System.out.println(s); } Integer[] ii = {1,2,3}; // Object 타입의 매개변수에 Integer 배열객체 전달 nogen.set(ii); objs = nogen.get(); for(Object o : objs) { String s = (String)o; // String으로 강제형변환 (에러발생) System.out.println(s.trim()); } } } class NoGeneric { Object[] v; void set(Object[] n) { v = n; } Object[] get() { return v; } void print() { for(Object o : v) { System.out.print(o + " "); } System.out.println(); } }
package chapter14; public class GenericEx2 { public static void main(String[] args) { Generic<String> gen = new Generic<String>(); String[] ss = {"홍길동","이순신","김유신"}; // String 제네릭 타입의 매개변수에 String 배열객체 전달 gen.set(ss); gen.print(); for(String s : gen.get()) { //String s = (String)o; // 형변환 필요없음 System.out.println(s); } Integer[] ii = {1,2,3}; // String 제네릭 타입의 매개변수에 Integer 배열객체 전달 // nogen.set(ii); // 에러 발생 Generic<Integer> gen2 = new Generic<Integer>(); gen2.set(ii); gen2.print(); for(Integer o : gen2.get()) { // String s = (String)o; // 형변환 필요없음 System.out.println(o); } } } class Generic<T> { T[] v; void set(T[] n) { v = n; } T[] get() { return v; } void print() { for(T o : v) { System.out.print(o + " "); } System.out.println(); } }
Member.java
package chapter14; public class Member { private String name; private String id; private String password; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
MemberNoGeneric.java
package chapter14; import java.util.ArrayList; import java.util.List; public class MemberNoGeneric { public static void main(String[] args) { // 제네릭을 사용하지 않은 경우 List list = new ArrayList(); Member mem1 = new Member(); mem1.setName("홍길동"); mem1.setId("hong"); mem1.setPassword("hong1234"); mem1.setAge(40); list.add(mem1); // 리스트에 추가 Member mem2 = new Member(); mem2.setName("이순신"); mem2.setId("lee"); mem2.setPassword("lee1234"); mem2.setAge(50); list.add(mem2); // 리스트에 추가 Member mem3 = new Member(); mem3.setName("김유신"); mem3.setId("kim"); mem3.setPassword("kim1234"); mem3.setAge(60); list.add(mem3); // 리스트에 추가 // 리스트 갯수 System.out.println("list.size() : "+list.size()); // 모든 리스트의 요소(Member) 강제형변환 후 출력 for (int i=0; i<list.size(); i++) { System.out.println("인덱스 : "+i +", 이름 : "+((Member)list.get(i)).getName() +", 아이디 : "+((Member)list.get(i)).getId() +", 비밀번호 : "+((Member)list.get(i)).getPassword() +", 나이 : "+((Member)list.get(i)).getAge()); } } }