泛型读书笔记-Java基础入门必备

泛型

  1. 泛型的概念:泛型是一个未知的数据类型,更准确得说是类类型,例如Integer,String,Object等等。

  2. 使用泛型和不使用泛型的区别
    总体来说:使用泛型有雪中送炭之功效,也就是说在你快要濒临绝境的时候还你一线生机。
    2.1使用泛型
    优点:避免的类型转换的麻烦,一旦类型固定了,存储什么类型,取出什么类型;同时把运行期异常提醒到编译器从而使用户更快更容易发现并改正错误。
    缺点:一旦泛型固定了类型,就只能存储什么类型。
    2.2不使用泛型
    优点:集合默认类型是Object类型,可以存储任意类型。
    缺点:不安全,会引发类型转换异常,同时有可能在编译阶段错误对用户不可见,运行时就会发生异常从而导致系统崩溃。
    这里也很好地证明了在程序的世界里,某种技术的缺陷必定会引起一场技术更新变革,于众多日新月异的科技技术中脱颖而出的新兴技术必然会在旧技术应用的领域引领潮流,为大众所认可,接纳并使用;但这并不意味着它一定会取代旧技术,这关系到一个亘古不变的规律:因旧技术应运而生的新技术,与旧技术维持着一种类似太极阴阳互补的利弊互辅的关系
    2.4举个栗子:在使用List时, 如果不使用泛型, 从List中取出元素时, 必须将元素向下转型(父类转子类,相应的,子类转父类是向上转型)为String才能使用,因为List中的元素类型是默认的Object类型;但使用泛型,由于在new是传参给的参数类型或者通过参数的值确定的类型就可以保证存入和取出的都是String类型, 不必再进行转换了,使代码具有更好的安全性和可读性。

  3. 泛型的定义和使用
    废话不多说,直接上代码,通过栗子更好地理解:
    在Et类中:

public Et (T key) {
		this.key = key;
	}
	
	public Et () {
		System.out.println("执行默认不传参构造方法");
	}
	
	public T  setKey(T key) {
		this.key = key;
		return key;
	}
	
	public T getKey() {
		return key;
	}  

在测试类中:

System.out.println("------------------------No.1传参+通过有参构造函数  泛型例子 :----------------------------------------------");
		Et etTest = new Et("字符串类型");
		Et etTest1 = new Et(857);
		
		System.out.println("泛型测试   , key is : "+ etTest.getKey());
		System.out.println("泛型测试1 , key is : "+ etTest1.getKey());
		
		System.out.println("------------------------No.2不传参+通过有参构造函数 泛型例子 :--------------------------------------------");
		Et etTest2 = new Et("不传参字符串类型");
		Et etTest3 = new Et(1024);
		Et etTest4 = new Et(1024.1024);
		Et etTest5 = new Et(false);
        System.out.println("泛型测试2 , key is : "+ etTest2.getKey());
		System.out.println("泛型测试3 , key is : "+ etTest3.getKey());
		System.out.println("泛型测试4 , key is : "+ etTest4.getKey());
		System.out.println("泛型测试5 , key is : "+ etTest5.getKey());

测试结果:
泛型读书笔记-Java基础入门必备_第1张图片
下面的阅读思路如上面的阐述格式:

System.out.println("------------------------No.3传参+通过无参(默认)构造函数 泛型例子 :--------------------------------------------");
		Et etTest6 = new Et();
//		Et etTest7 = new Et();
		etTest6.setKey(9527);
		System.out.println("泛型测试6 , key is : "+ etTest6.getKey());

在这里插入图片描述

System.out.println("------------------------No.4不传参+通过无参(默认)构造函数 泛型例子 :--------------------------------------------");
		Et etTest8 = new Et();
		etTest8.setKey(2673);
		System.out.println("泛型测试8 , key is : "+ etTest8.getKey());

在这里插入图片描述

System.out.println("------------------------No.5通配符泛型例子 :--------------------------------------------");
		Et etTest9 = new Et();
		etTest9.ShowKey(etTest8);
		System.out.println("泛型测试9 , key is : "+ etTest9.getKey());

在这里插入图片描述

System.out.println("------------------------No.5泛型方法例子1 :--------------------------------------------");
		Et etTest10 = new Et();
		List son = new ArrayList();
		List father = new ArrayList();
		for(int i = 0 ; i<10 ;i++)
			son.add(i);
		etTest10.EtMethod(son, father);
       
		System.out.println("------------------------No.5泛型方法例子2 :--------------------------------------------");
		Et etTest11 = new Et();
		List son1 = new ArrayList();
		List father1 = new ArrayList();
		for(int i = 0 ; i<11 ;i++)
			son1.add(i);
		etTest11.EtMethod1(son1, father1);

泛型读书笔记-Java基础入门必备_第2张图片
完整的代码已上传,就只有两个类,可自行调试。

你可能感兴趣的:(笔记)