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

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>();	
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值