什么是泛型?

什么是泛型?

1、泛型的定义

泛型顾名思义就是宽泛的,不确定的类型 。
泛型的使用可以最大限度地重用代码、保护类型的安全以及提高性能

比如我们有这样两个仅参数不同的方法在这里插入图片描述

在微软推出泛型出现之前,为了代码的重用会用到Object来接受参数如:在这里插入图片描述
这样做虽然解决了代码的重用但是会有两个问题:

  1. 损耗性能 ,每次调用方法都要经历一次装箱拆箱;
  2. 类型安全,所有的类型都是继承自object;

创建一个简单的泛型方法

泛型出现之后轻松的解决了以上问题
在这里插入图片描述
调用泛型方法:如果可以根据参数推算出参数类型,参数类型可以省略

方法名<参数类型>(参数);

定义一个泛型类:where 后面是对泛型的约束。class指泛型参数必须是个类,new()指参数必须是实例化
在这里插入图片描述
同理创建一个简单的泛型接口:
在这里插入图片描述

调用泛型接口、泛型类时跟调用方法一样都需要传入参数类型

### Java 概念 Java提供了一种机制,在定义类、接口和方法时可以指定形式上的类参数,这些参数可以在实际使用的时候被具体的类所替换。通过这种方式,能够创建更加灵活且安全的代码结构[^4]。 #### 定义类或接口 当希望某个类能处理多种数据类的对象而不局限于特定的一种时,就可以考虑采用的设计思路。下面是一个简单的例子展示如何定义一个带有单个类参数`T`的类: ```java public class Box<T> { private T content; public void setContent(T content){ this.content = content; } public T getContent(){ return content; } } ``` 这里使用的`<T>`表明这是一个具有单一类参数名为`T`的类。每当实例化此类的对象时,都需要指明具体的数据类,比如`Box<String>` 或者 `Box<Integer>`等。 对于接口而言,同样支持化的定义方式。例如给定一个通用的操作接口如下所示: ```java public interface Operation<T>{ boolean operate(T a,T b); } ``` #### 创建方法 除了类之外,还可以单独为某些方法设置类参数。这意味着即使是在非类内部也可以拥有接受不同种类输入的方法。其基本格式如下: ```java //静态上下文中声明方法 public static <E> E[] toArray(List<E> list) {...} //成员方法中声明方法 public <K,V> Map<K,V> toMap(Collection<? extends K> keys, Collection<? extends V> values) {...} ``` 注意这里的`<E>`部分位于返回值之前但是访问修饰词之后的位置上,这标志着该函数接收了一个新的局部作用域内的类变量`E`[^1]。 #### 使用提高代码安全性与可读性 借助于编译期检查的优势,利用可以让程序更早发现潜在错误并减少运行期间可能出现的问题。同时由于减少了强制转换的需求使得代码变得更加简洁易懂[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值