您的位置:首页 > 编程语言 > Java开发

Java学习笔记之泛型(一):集合中的泛型

2017-09-26 15:06 465 查看
package com.collection.genericity;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/*
* 泛型是JDK1.5开始使用的新特性;
*/

public class Demo1 {

/*
* 泛型:
*	需求:把一个集合中的全部元素转成大写;
*/
@Test
public void test1(){
List list = new ArrayList();
list.add("hello");
list.add("world");
list.add("china");

// 因为默认情况下,list集合可以添加任意类型的数据,所以当集合中添加了整形的数据时,就出现了异常:
// java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
list.add(123);

// 将集合中的所有元素全部转为大写
for (int i = 0; i < list.size(); i++){
// 因为默认情况下,集合中可以添加任意类型的数据,所以需要先将集合中的所有元素强制转换成字符串;
// 如果集合中加入了整数数据,此处会报错,因为整形数据不可以强制转换成字符串类型;
String str = (String) list.get(i);
System.out.println("大写:" + str.toUpperCase());
}
}

/*
* 泛型的好处:
* 	1、将运行时的异常提前至编译时;
* 	2、避免了无谓的强制类型转换;
*/
@Test
public void test2(){

// 泛型写法 <String>:表示该集合中只能存储字符串类型的数据;
List<String> list = new ArrayList<String>();
list.add("Hello");
list.add("world");
list.add("china");

// 因为已经指定了集合的存储类型只能是字符串类型,所以此处编译时就会报错;
//		list.add(123);

for (int i = 0; i < list.size(); i++){
// 因为容器中存储的都是字符串类型的数据,所以取出的也是字符串,就不需要强制类型转换了;
String str = list.get(i);
System.out.println("大写:" + str.toUpperCase());
}

}

/*
泛型在集合中的常见应用:
List<String> list = new ArrayList<String>();	true
List<Object> list = new ArrayList<String>();	false
List<String> list = new ArrayList<Object>();	false

// 以下两种写法主要是为了让JDK1.5以后的写法兼容1.4以前的写法;
List<String> list = new ArrayList();			true
List 		 list = new ArrayList<String>();	true

注意:泛型没有多态的概念,左右两边的数据类型必须要一致,或者只写一边的泛型;
推荐使用:两边都写泛型;

*/
@Test
public void test3(){
List<String> list1 = new ArrayList<String>();
//		List<Object> list2 = new ArrayList<String>();
//		List<String> list3 = new ArrayList<Object>();

List<String> list4 = new ArrayList();
List 		 list5 = new ArrayList<String>();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: