泛型,字面意思 不确定的类型。 广泛的类型。
就是给集合或者类方法指定,只能添加什么类型数据进来。
主要用于集合和比较器上
所谓泛型,就是允许在定义类、接口时通过一个标识 表示类中某个属性的类型 或者是某个方法的 返回值或参数的类型 。这个类型参数将在使用时(例如,继承或实现这个接口、创建对象或调用方法时)》确定(即传入实际的类型参数,也称为类型实参)
/*
使用泛型之前
*/
public class FanXingTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(78);
list.add(67);
list.add(48);
list.add(59);
//类型不安全,因为默认object类型,各种类型都会添加进去
// list.add("AA");
Iterator iterator = list.iterator();
while (iterator.hasNext()){
//2.
Integer next = (Integer) iterator.next();
System.out.println(next);
}
}
}
/*
使用泛型之后
*/
class FanXingAfterTest{
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(78);
list.add(67);
list.add(48);
list.add(59);
list.add(44);
//编译报错,避免报错
// list.add("AAA");
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
//因为都是Integer类型避免了强制转换这一步
Integer next = (Integer) iterator.next();
System.out.println(next);
}
}
}
/*
泛型在Map中的使用
*/
class MapFanXingTest{
public static void main(String[] args) {
// HashMap<String, Integer> map = new HashMap<String, Integer>();
//jdk7.0新特性
HashMap<String, Integer> map = new HashMap();//类型的推断写法
map.put("Tom",87);
map.put("Jerry",65);
map.put("Rose",95);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
集合框架在声明接口和其实现类时,使用了泛型(jdk5.0),在实例化集合对象时如果没有使用泛型,则认为操作的是object类型的数据。如果使用了泛型,则需要指明泛型的具体类型。一旦指明了泛型的具体类型,则在集合的相关的方法中,凡是使用类的泛型都替换成声明的泛型类型。
推荐阅读: