泛型
package itheima.com.GenericEx;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
/*jdk1.5新特性 泛型
泛型里的参数不存在继承关系
他们的字节码是一份
泛型参数是给编译器看的
*/
public class GenericTest {
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
ArrayList<String> connection=new ArrayList<String>();
connection.add("abc");
ArrayList<Integer> connection1=new ArrayList<Integer>();
connection1.add(234);
// 用反射获取字节码,说明他们的字节码是一份。
System.out.println(connection.getClass()==connection1.getClass());
//泛型参数是给编译器看的
connection1.getClass().getMethod("add", Object.class).invoke(connection1, 234);
System.out.println(connection.get(0));
}
}
泛型的通配符使用
使用通配符的类,不能调用与泛型参数有关的方法
只有引用类型才能作为泛型的参数,基本数据类型是不能作为泛型的参数
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class GenericHashMap {
public static void main(String[] args) {
HashMap<String, Integer> maps = new HashMap<String, Integer>();
maps.put("abc", 22);
maps.put("fbg", 24);
maps.put("ert", 34);
// HashMap没有注解的迭代方法 所以又用到Set中的方法
// EntrySet是一个集合
Set<Map.Entry<String, Integer>> EntrySet = maps.entrySet();
for (Map.Entry<String, Integer> entry : EntrySet) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}