java 高级泛型_JAVA高级复习-泛型的使用

1、JDK5.0新增的特性

2、在集合中使用泛型

总结:

① 集合接口 或 集合类在JDK5.0时都修改为带泛型的结构

② 在实例化集合类时,可以指明具体的泛型类型

③ 指明完以后,在集合类 或 接口中,凡是定义类 或 接口时,内部结构(比如:方法、构造器、属性等)使用到类的泛型的位置,都指定为实例化的泛型类型。比如:add(E e) --> 实例化以后:add(Integer e)

④ 注意点:泛型的类型必须是类,不能是基本数据类型,需要用到基本数据类型的位置,拿其对应的包装类替换

public class GenericTest {

/**

* 在集合中不使用泛型可能出现的问题

*/

@Test

public void test01(){

List list = new ArrayList<>();

list.add(1);

list.add(2);

//问题一:类型不安全

list.add("好的");

for (Object obj : list) {

//问题二:强转时,出现ClassCastException

Integer num = (Integer) obj;

System.out.println(num);

}

}

/**

* 在集合中使用泛型,以ArrayList为例

*/

@Test

public void test02() {

//泛型的数据类型不能是基本数据类型,所以下面的注释掉的是错误的

// List list = new ArrayList<>();

List list = new ArrayList<>();

list.add(1);

list.add(2);

//泛型自带类型检查,编译时,就会进行类型检查,保证数据的安全

// list.add("好的");

for (Integer obj : list) {

//泛型避免了强转操作

Integer num = obj;

System.out.println(num);

}

}

/**

* 在集合中使用泛型,以HashMap为例

*/

@Test

public void test03() {

Map map = new HashMap<>();

map.put("TOM", 1);

map.put("JACK", 2);

Set> entries = map.entrySet();

Iterator> iterator = entries.iterator();

while (iterator.hasNext()) {

Map.Entry next = iterator.next();

String key = next.getKey();

Integer value = next.getValue();

System.out.println(key);

System.out.println(value);

}

}

}

你可能感兴趣的:(java,高级泛型)