Java泛型的使用和优点(一)

  • 概念:泛型就是参数化类型,使用广泛的类型。

  • 起因:数据类型不明确:
    1.装入数据的类型都被当做Object对待,从而“丢失”自己的实际类型。
    2.获取数据时往往需要转型,效率低,容易产生错误。

  • 作用:
    1.安全:在编译的时候检查类安全
    2.省心:所有强制转换都是自动和隐式的,提高代码的重用率。

  • 泛型类:定义类时使用泛型
    1)。格式<>
    class类名<字母列表>{
    修饰 字母 属性;
    修饰 构造器(字母){
    }
    修饰 返回类型 方法(字母){
    }
    }

  • 泛型常见字母
    -T:type表示类型
    -K V :是键值中的key,value
    -E :代表elemnt
    -? :表示不确定的认意类型。

  • 不能使用在静态属性、静态方法上
    2)、使用:指定具体类型
    1.编译时会进行类型检查;
    2.获取数据时不需要强制类型转换。

  • 泛型使用时不能制定基本类型
    例子:

/**
 * 泛型类:声明时使用泛型
 * 字母:
 * T:type表示类型
 * K V :是键值中的key,value
 * E :代表elemnt
 * ? :表示不确定的认意类型
 * 使用时确定类型,不能用基本类型
 * 注意
 * 1、泛型只能使用引用类型,不能使用基础类型
 * 2、泛型声明时字母不能使用静态属性和静态方法上
 * @author DELL
 *泛型有点像C语言里的宏定义,例如:define int T2
 * @param <T>
 */
public class Student<T1,T2> {
	private T1 javaScore;
	private T2 oracleScore;
	
	//泛型声明时不能使用静态属性和静态方法上
	//private static T1 test;
	
	
	public T1 getJavaScore() {
		return javaScore;
	}

	public void setJavaScore(T1 javaScore) {
		this.javaScore = javaScore;
	}

	public T2 getOracleScore() {
		return oracleScore;
	}


	public void setOracleScore(T2 oracleScore) {
		this.oracleScore = oracleScore;
	}

	public static void main(String[] args) {
		//使用时指定类型(引用类型)
		/*java为每种基本类型都提供了对应的封装类型,
		 * 分别为:Byte、Short、Integer、Long、
		 * Float、Double、Character、Boolean。
		 * 引用类型是一种对象类型,
		 * 它的值是指向内存空间的引用,就是地址。
		 */
		Student<String ,Integer> stu = new Student<String ,Integer>();
		//1、安全:类型检查
		stu.setJavaScore("优秀");
		//2、省心:类型转换
		int it = stu.getOracleScore(); //自动拆箱
	}
}

下面解释泛型的优点不必频繁拆装箱

/**
 * 获取值:
 * 1、需要强制类型转换
 * 2、类型检查:避免出现转换错误java.lang.ClassCastException:
 * @author DELL
 *
 */
public class App {
	public static void main(String[] args) {
		Object obj = 70;
		int score = (int) obj;//jdk1.7以后Object-->Integer-->int(自动拆箱)
		System.out.println(score);
		
		
		//存入整数  发生自动装箱int-->Integer-->Object
		Student stu = new Student(80,90);
		//()stu.getJavase();
		int javaScore = (Integer)stu.getJavase();
		String oracleScore = null;
		//获得是值是否属于String类型
		if(stu.getOracle() instanceof String) {
		oracleScore = (String)stu.getOracle();
		}
		System.out.println("分数为"+javaScore+","+oracleScore);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值