泛型(Generics)-第一阶段-第十三天

本文介绍了Java中的泛型概念,解释了为何在接口中使用泛型以确保数据类型的规范。通过实例展示了不使用泛型可能导致的类型混乱问题,并通过泛型的使用避免了类型转换和潜在错误。此外,还展示了如何自定义泛型类以及泛型在集合操作中的好处,如编译期检查和减少类型转换。虽然Java泛型在运行时退化为Object类型,但其在开发中提供了显著的便利性和安全性。建议在实际开发中广泛使用泛型。

泛型

接口中使用泛型的情况

  1. 理解:广泛的类型(参数化的类型)
  2. 在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型但是不能写入基本数据类型
  3. 为什么会运用泛型:如果在储存数据的时候想要只存储String类型的数据,如果不加泛型,那么当你加入其它类型的数据的时候不会报错,会导致储存类型混乱,如果以后处理此数据,难免不会报错。
  4. 如果使用集合的时候没有使用泛型,系统会默认指定为Object类型

不使用泛型的情况

package com.qianfeng.day13;

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

public class GenericsTest {
	public static void main(String[] args) {
		List list = new ArrayList();
		
		list.add(18);
		list.add(19);
		list.add(20);
		
		list.add("zhangsan");
		
		for(int i = 0; i < list.size(); i++) {
			System.out.println((Integer)list.get(i));
		}
	}
}

报错且使用过程中会警告

在这里插入图片描述

使用泛型的情况

package com.qianfeng.day13;

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

public class GenericsTest {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList();
		
		list.add(18);
		list.add(19);
		list.add(20);
		
		//list.add("zhangsan");
		
		for(int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}
}

编译器会提示错误

在这里插入图片描述

定义自己的泛型类

package com.qianfeng.day13;

public class MyClass<T> {
	
	private T x;

	public MyClass(T x) {
		this.x = x;
	}

	public T getX() {
		return x;
	}

	public void setX(T x) {
		this.x = x;
	}
	
}

泛型的好处

  1. 在使用集合的过程中使用泛型能够很好的起到规范作用,在编译期能够检查代码
  2. 从集合中获取的元素就是指定的类型,无序强制转换,能够直接使用对应类型,减轻了编程负担
  3. 能够自己定义泛型,对传入属性的类型能够由用户自己确定。

为什么说java中的泛型为伪类型

Java中指定的泛型只会在编译期产生作用,在程序执行的期间我们的元素还是Object类型
比如在ArrayList集合中,此集合在原码中定义的类型为Object,通过泛型约束之后,不会将ArrayList集合的类型转化为泛型所指定的类型。

结语

在之后的开发中推荐使用泛型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值