* 제너릭 -1.5 : class에 사용할 type - class 작성 X
- 사용시점에 지정 - O
ex :
A<String> a = new A<String>();
class A<String>{
public void go(String a){
}
}
위처럼 하면 A<String> a = new A<String>();
a.go();<-를 하면 String 값을 넘기는 것 밖에 안된다.
* 제너릭을 사용하지 않으면 실행은 잘되는데 컴파일 시점에 문제가 생길 수 있다.
제너릭을 쓰는 이유 Object 타입으로 썼을 경우 다른 객체들이 들어오는 건 장점이기도 하지만, 형변환시 문제가 생길 수 있기에 사용한다.
(타입에 대한 불안정을 해결해 준다.)
Project : day22
package : generic
class : GenericTest
package generic;
class BasicGeneric<E , K>{
public void printInfo(E obj){
// if(obj instanceof String){
// String str = (String)obj;
// }
System.out.println(obj);
}
public void test(K k){
}
}
public class GenericTest {
public static void main(String[] args) {
BasicGeneric<String,String> b = new BasicGeneric<String,String>();
b.printInfo("abcde");
//b.printInfo(new Integer(10));
BasicGeneric<Integer,String> b2 = new BasicGeneric<Integer,String>();
b2.printInfo(new Integer(10));
// b2.printInfo("abcde");
BasicGeneric b3 = new BasicGeneric();//BasicGeneric<Object> b2 = new BasicGeneric<Object>();
b3.printInfo("abcde");
b3.printInfo(new Integer(20));
}
}
-----------------
=============================================
Project : day22
package : generic
class : CollectionGeneric
package generic;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class CollectionGeneric {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("String1");
list.add("String2");
//list.add(new Integer(10));
//list.add(new CollectionGeneric());
String str = list.get(0);
for(String o : list){
System.out.println(o);
}
//////////map//////////
HashMap<String,Integer> map = new HashMap<String,Integer>();
//map.put("name", "홍길동");
map.put("age", 10);
map.put("age", new Integer(20));
Integer age = map.get("age");
Set<String> keys = map.keySet();
Iterator<String> itr = keys.iterator();
while(itr.hasNext()){
String key = itr.next();
Integer value = map.get(key);
System.out.println(key+"-"+value);
}
}
}
'프로그래밍 > JAVA프로그래밍' 카테고리의 다른 글
boxing, unboxing, wrapperClass (0) | 2012.07.29 |
---|---|
object클래스 (0) | 2012.07.29 |
collection값 빼오기 (0) | 2012.07.28 |
map실습 (0) | 2012.07.28 |
ArrayList실습 (0) | 2012.07.28 |