#yyds干huo盘点#深入Java泛型

首先来说 泛型 是什么。泛型的英文是 generic ,中文意思是通用的、一类的,结合其应用场景,我理解泛型是一种 通用类型。但我们一般指泛型都是指其实现方式,也就是 将类型参数化 对于 Java 这种强类型语言来说,如果没有泛型的话,处理相同逻辑不同类型的需求会非常麻烦。 如果想写一个对 int 型数据的快速排序:

public static void quickSort(int[] data, int start, int end) {

int key = data[start];

int i = start;

int j = end;

while (i < j) {

while (data[j] > key && j > i) {

j–;

}

data[i] = data[j];

while (data[i] < key && i < j) {

i++;

}

data[j] = data[i];

}

data[i] = key;

if (i - 1 > start) {

quickSort(data, start, i - 1);

}

if (i + 1 < end) {

quickSort(data, i + 1, end);

}

可是如果需求变了,现在需要实现 int 和 long 两种数据类型的快排,那么我们需要利用 Java 类方法重载功能,复制以上代码,将参数类型改为 double 粘贴一遍。可是,如果还要实现 float、double 甚至字符串、各种类的快速排序呢,难道每添加一种类型就要复制粘贴一遍代码吗,这样未必太不优雅。 当然我们也可以声明传入参数为 Object,并在比较两个元素大小时,判断元素类型,并使用对应的方法比较。这样,代码就会恶心在类型判断上了。不优雅的范围小了一点,并不能解决问题。 这时,我们考虑使用通用类型(泛型),将快排方法的参数设置为一个通用类型,无论什么样的参数,只要实现了 Comparable 接口,都可以传入并排序。 ```java public static > void quickSort(T[] data, int start, int end) { T key = data[start]; int i = start; int j = end; while (i < j) { while (data[j].compareTo(key) > 0 && j > i) { j–; } data[i] = data[j]; while (data[i].compareTo(key) < 0 && i < j) { i++; } data[j] = data[i]; } data[i] = key; if (i - 1 > start) { quickSort(data, start, i - 1); } if (i + 1 < end) { quickSort(data, i + 1, end); } } ``` 那么,可以总结一下泛型的应用场景了,当遇到以下场景时,我们可以考虑使用泛型:

  • 当参数类型不明确,可能会扩展为多种时。

  • 想声明参数类型为 Object,并在使用时用 instanceof 判断时。

需要注意,泛型只能替代Object的子类型,如果需要替代基本类型,可以使用包装类,至于为什么,会在下文中说明。

怎么用


泛型的声明使用 <占位符 [,另一个占位符] > 的形式,需要在一个地方同时声明多个占位符时,使用 , 隔开。占位符的格式并无限制,不过一般约定使用单个大写字母,如 T 代表类型(type),E 代表元素*(element)等。虽然没有严格规定,不过为了代码的易读性,最好使用前检查一下约定用法。 泛型指代一种参数类型,可以声明在类、方法和接口上。

泛型类

```java class Generics { // 在类名后声明引入泛型类型 private T field; // 引入后可以将字段声明为泛型类型 public T getField() { // 类方法内也可以使用泛型类型 return field; } } ```

泛型方法

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
  2. 项目经历:只写明星项目,描述遵循 STAR 法则;
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB
1724141120053)]

[外链图片转存中…(img-oaeQOlGE-1724141120054)]

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值