Java进阶-泛型

随便扯点

我为什么要再次学Java

java知识是作为Android开发的语言基础,虽然现在已经推出了kotlin,但是基于以下原因我还是需要好好牢牢掌握java:
①SDK还是改成java,kotlin也需要编译成为java运行;
②目前大量的第三方库和继承与前任的代码都是java所写的;
③Java语言应用不仅仅在Android,就是在后台开发中也是一个最流行的语言;
④大公司面试都要求我们有扎实的Java语言基础。
所以,好好学Java!

一.为什么要用泛型

假如我们需要进行两个整型数字的相加:

	public int addInt(int a,int b) {
   
		return a+b;
	}

ok,很简单,那么如果需求变了,我们需要两个double型数据的相加,好,那就再写一个方法出来

	public double addDouble(double a,double b) {
   
		return a+b;
	}

当然,这很简单。但是在实际应用当中,很多情况下我们不一定事先知道我们需要的数据类型,难道我们要把所有数据类型的数字相加的方法都写一遍吗?这未免有点太扯犊子了。如果有那么一种类型,它可以接受所有的数据类型,那就太棒了!没错,这就是泛型。所以上面两个(或者说n多个)方法可以简化为一个函数(虽然也要进行类型的判断),但是达到了简化方法数目的目的。
OK,这样就引出了泛型的第一个好处
适用于多种数据类型执行相同的代码
那么继续来讲。我们都用过集合,存储数据,比如ArrayList,当你存入了一堆String数据的时候,再存入一个Int数据的时候,编译器不会显示任何错误,因为此时list默认的类型为Object类型,但是在运行的时候如果需要强转成String类型后输出,就会出错了。报错一般是

java.lang.ClassCastException

但是如果一开始就使用了泛型来规定存放的数据只能是String类型(尖括号里面加个String),那在编译阶段编译器就能显示错误,这样就方便多了。所以这里又得出了泛型的第二个好处:
泛型中的类型在使用时指定,不需要强制类型转换
泛型作用:
①相同的代码可以适应多种数据类型
②在编码的过程中就可以指定数据类型,而不需要进行强转,不至于编译的时候看不出来,运行的时候才报错。

二.什么是泛型

先看一段官方的理解:

泛型,即“参数化类型”。顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

这一段话不理解无所谓,主要是会用,下面的知识要懂。

1.泛型类

(1)一个T

public class NormalGeneric<T> {
   
	private T data;
	public NormalGeneric(T data) {
   
		this.data = data;
	}
}

(2)一个T一个K

public class NormalGeneric<T,K> {
   
	private T data
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值