Java 泛型

1.什么是泛型

泛型指的就是“参数化类型”。也就是将类型由原来的具体的类型参数化。
就比如:定义一个方法去处理String的数据,但后面需要处理Int的数据呢?则又需要进行重载,这就导致了很多代码的重复。这里有的会说,使用Object类型,虽然Object类型可以接收任何的数据类型,但如果想用Object进行算数运算呢?我传一个String类型的数据,然后正好运算时要使用double类型的数据,显然,这时候会有bug,因为String类型强转成double的时候会出现异常

**所以这时候就需要使用泛型,先不定义具体的类型,等到需要使用时在通过泛型设置指定的类型(泛型需要注入的是包装类)例如ClassName<Integer>等,ClassName<int>则会爆红提示有错误,并提示。

2.泛型的三种使用方式

2.1 泛型类

例如:定义一个泛型类

public class ClassName<T>{
			private T data;
			public T getData() {
					return data;
				}
			public void setData(T data) {
			this.data = data;
		}
}

这个T也就是一个代表的数据类型,如果在后续使用ClassName类时,设置的T也就会变成对应的数据类型,例如使用ClassName<String>的话,那么ClassName类中,原本的T所在的地方就会变成String类型
设置指定属性后就像如下代码

public class ClassName<String>{
			private String data;
			public String getData() {
					return data;
				}
			public void setData(String data) {
			this.data = data;
		}
}

2.2泛型接口

一个泛型的接口

public interface IntercaceName<T>{
T getData();
}

在实现接口时,可以自由选择指定泛型类型,也可以选择不指定, 如下:
指定类型:

public class Interface1 implements IntercaceName<String> {
private String text;
@Override
public String getData() {
	return text;
	}
}

不指定类型:

public class Interface1<T> implements IntercaceName<T> {
private T data;
@Override
public T getData() {
	return data;
	}
}

具体使用起来与泛型类相似,就不多做赘述。

2.3泛型在方法的使用

泛型在方法中使用的话,作用域就仅限于方法
例如:

public class Main1 {
    public static void main(String[] args) {
        //右边的<>中的String在JDK1.7后即可省略,1.7后默认与左边<>一致
       // Person<Integer> person = new Person<>();
        printInfo("123");
        
        //输入数字型的则会自动装箱
        printInfo(456);
    }

    public static <T> void printInfo(T t){
        System.out.println(t);
    }
}

输出如下

在这里插入图片描述

最后!

泛型的作用
1、 提高代码复用率
2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

注意:
在编译之后程序会采取去泛型化的措施。
也就是说Java中的泛型,只在编译阶段有效。
在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加
类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值