泛型可以用于接口、类、方法上。还有泛型通配符这个概念

泛型的好处:可以在编译时检查

1.用于方法中,指定该方法中的形参的类型。

语法:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

注意:方法上定义了是什么 泛型变量 ,后面就只能用什么 泛型变量

package com.itheima.hw;

import java.util.Arrays;

/**
* @author Pzi
* @create 2022-09-27 9:57
*/
public class GenericArray { // 泛型方法,交换数组中两个索引位置的值
public static <T> void swap(T[] arr, int index1, int index2) {
T temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
}
} public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6};
Integer newNums[] = Arrays.stream(arr).boxed().toArray(Integer[]::new);
swap(newNums, 0,1);
} }
2.用于类上

修饰符 class 类名<代表泛型的变量> { }

3.用于接口上

修饰符 interface接口名<代表泛型的变量> { }

  • 如果某个类要实现某个泛型接口,但是该实现类也不确定类型,如下定义
public class MyImpl3<E> implements MyGenericInterface<E> {
@Override
public void add(E e) { } @Override
public E getE() {
return null;
}
}
4.泛型通配符

可以用来指定传入类型的上限和下限

可以用来表示位置的类型,比如说一个方法中形参的类型

如:

public static void getElement(Collection<?> coll){}

类型名称 <? extends 类 > 对象名称
表示只能传入该类或者其子类 类型名称 <? super 类 > 对象名称
表示只能传入该类或其父类

Java泛型的总结的更多相关文章

  1. Java泛型的历史

    为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在200 ...

  2. 浅析Java 泛型

    泛型是JavaSE5引入的一个新概念,但是这个概念在编程语言中却是很普遍的一个概念.下面,根据以下内容,我们总结下在Java中使用泛型. 泛型使用的意义 什么是泛型 泛型类 泛型方法 泛型接口 泛型擦 ...

  3. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  4. java泛型基础

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法.  Ja ...

  5. 使用java泛型设计通用方法

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...

  6. 关于Java泛型的使用

    在目前我遇到的java项目中,泛型应用的最多的就属集合了.当要从数据库取出多个对象或者说是多条记录时,往往都要使用集合,那么为什么这么使用,或者使用时有什么要注意的地方,请关注以下内容. 感谢Wind ...

  7. 初识java泛型

    1 协变数组类型(covariant array type) 数组的协变性: if A IS-A B then A[] IS-A B[] 也就是说,java中的数组兼容,一个类型的数组兼容他的子类类型 ...

  8. 【Java心得总结四】Java泛型下——万恶的擦除

    一.万恶的擦除 我在自己总结的[Java心得总结三]Java泛型上——初识泛型这篇博文中提到了Java中对泛型擦除的问题,考虑下面代码: import java.util.*; public clas ...

  9. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...

  10. 初识Java泛型以及桥接方法

    泛型的由来 在编写程序时,可能会有这样的需求:容器类,比如java中常见的list等.为了使容器可以保存多种类型的数据,需要编写多种容器类,每一个容器类中规定好了可以操作的数据类型.此时可能会有Int ...

随机推荐

  1. 5-19 SpringAop | 切面编程

    Aop面向切面编程 什么是Aop 面向切面的程序设计(Aspect Oriented Programming)又译作剖面导向程序设计 和OOP(Object Oriented Programming) ...

  2. Solution -「营业」「CF567D」One-Dimensional Battle Ships

    题目大意 - 翻译   Alice 和 Bob喜欢在 \(1\times n\) 的表格中玩战舰游戏.游戏开始时,Alice 有 \(k\) 艘战舰,每艘战舰长度为 \(a\),她需要把这些战舰不重叠 ...

  3. 搭建一个完整的K8S集群-------基于CentOS 8系统

    创建三个centos节点: 192.168.5.141 k8s-master 192.168.5.142 k8s-nnode1 192.168.5.143 k8s-nnode2 查看centos系统版 ...

  4. ora-26002:Informatica的Powercenter跑ETL时,出现ora-26002错误解决办法

    在使用Informatica进行ETL导数的时候,出现下面的错误: WRT_8229 Database errors occurred: ORA-26002: Table REPORT.TB_JK_0 ...

  5. 项目经验记录丨Modbus转EtherNET/IP协议转换应用

    使用电脑通过软件来进行模拟 EtherNET/IP主站连接Mdodbus从站设备的项目记录.使用软件为EIPScan 模拟主站,通过Modbus转EtherNET/IP网关连接Modbus Slave ...

  6. Windows 11上Dev C++ 5.11 提示 Failed to execute xxx Error 0的一种解决方法

    问题现象 在Windows 11上用Dev C++ 5.11编译运行程序,出现如下错误不能运行,且自己的程序没有问题. 可能的原因 Dev C++没有以管理员身份运行? 生成的程序所在的目录受到了访问 ...

  7. 前端知识之CSS(1)-css语法、css选择器(属性、伪类、伪元素、分组与嵌套)、css组合器

    目录 前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2.link标签引入外部css文件 3.3.标签内直接书写 4.c ...

  8. 【java】学习路线6-静态方法、私有化方法、父类子类

    import java.util.Arrays; /* 我们可以自己创建方法(静态) 私有化方法,阻止他人实例化该方法 静态代码块只执行一次,只在加载这个所在类的时候执行 父类 - 子类 子类继承自父 ...

  9. 【漏洞分析】KaoyaSwap 安全事件分析

    相关信息 KaoyaSwap 是 BSC 链上的一个自动做市商 AMM.然后,现在他们的官网 https://www.kaoyaswap.com/ 已经打不开了(如果我打开方式没错的话).所以就直接进 ...

  10. Linux面试题 系统启动流程

    BIOS:基本输入输出系统,帮助我们初始化硬件 硬盘分区有两类:MBR和GPT ; MBR单块硬盘不能大于2T,主分区的数量不能超过4个:MBR方案存储在第一个扇区的前446个字节(共512字节,后面 ...