Java泛型介绍

本文介绍了Java泛型的基本概念,包括泛型的定义、如何在类声明及方法中使用泛型,以及实例化泛型类的方法。同时,还讨论了如何使用通配符来替代具体的类型参数。

Java泛型介绍

泛型定义:参数化类型,数据类型被指定为一个参数

定义泛型

1.定义在类声明上,作用域为整个类
public class ArrayList
2.定义在方法上(静态方法也类似)
public void init(T t)

实例化泛型

ArrayList list=new ArrayList<>();

init(“abc”);

在实例化类或调用方法时要指定具体类。

通配符

在实例化类时,不确定具体类型可以使用通配符‘?’

ArrayList

### Java 的概念 Java 是一种允许编写可以处理多种数据类的代码的技术。通过使用,可以在定义类、接口和方法时不指定具体的类,在使用这些组件时再指明具体的数据类[^1]。 #### 的优点 引入的主要目的是为了在编译期提供更强的类检查,并支持编程。这有助于减少强制类转换的需求并提高程序的安全性和可读性[^2]。 ### 的基本用法 #### 定义类 可以通过声明带有类参数的类来创建类。例如: ```java public class Box<T> { private T content; public void setContent(T content) { this.content = content; } public T getContent() { return content; } } ``` 这段代码展示了如何定义一个名为 `Box` 的简单容器类,它可以保存任何类的对象[^3]。 #### 使用类 当实例化此类时,需指定要使用的特定类作为类参数的实际值: ```java Box<String> stringBox = new Box<>(); stringBox.setContent("Hello"); System.out.println(stringBox.getContent()); ``` 这里创建了一个专门用于存储字符串 (`String`) 的盒子实例。 #### 定义方法 除了类外,还可以定义接受或返回任意类的方法。下面是一个简单的例子: ```java public static <E> List<E> asList(E... elements) { ArrayList<E> list = new ArrayList<>(elements.length); Collections.addAll(list, elements); return list; } ``` 该静态工厂方法能够接收不定数量的不同元素并将它们封装到列表中去。 ### 类擦除机制 值得注意的是,尽管源码层面看起来像是存在不同的类版本,但实际上 JVM 上只有一种非形式的存在——这就是所谓的“类擦除”。这意味着所有的信息都会被移除掉,取而代之的是最通用的对象表示或者边界限定内的某个具体类[^4]。 对于有界类参数的情况,比如 `<T extends Number>` 这样的表达方式,JVM 将会把所有涉及的地方都替换成它的第一个上限(即 `Number`),而对于无界的则一律视为 `Object` 处理。 ### 继承与 当子类继承自具有参数的父类时,可以选择立即固定住这个参数的具体类,从而使自己变成普通的非类;也可以继续保留特性以便于进一步定制化[^5]。 ```java // 子类明确了父类中的为 String class ChildClass extends ParentClass<String> {} ``` 上述片段说明了怎样让子类成为普通类的同时还锁定了来自超类的那个未绑定过的类变量。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值