当前位置:首页 > Java

java泛型如何使用

2026-04-09 08:01:43Java

泛型的基本概念

泛型(Generics)是Java 5引入的特性,允许在编译时检查类型安全,避免运行时类型转换错误。泛型可以应用于类、接口和方法,通过类型参数(如<T>)实现代码的通用性。

泛型类

泛型类在类名后添加类型参数,可以在类中作为字段、方法参数或返回值的类型。

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

使用示例

java泛型如何使用

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String value = stringBox.getContent(); // 无需强制类型转换

泛型接口

泛型接口与泛型类类似,接口名后添加类型参数,实现类需指定具体类型或保留泛型。

public interface Pair<K, V> {
    K getKey();
    V getValue();
}

// 实现类指定具体类型
public class StringIntegerPair implements Pair<String, Integer> {
    @Override
    public String getKey() { return "key"; }

    @Override
    public Integer getValue() { return 1; }
}

泛型方法

泛型方法在方法返回类型前声明类型参数,独立于类的泛型参数。

java泛型如何使用

public <T> void printArray(T[] array) {
    for (T item : array) {
        System.out.println(item);
    }
}

使用示例

Integer[] intArray = {1, 2, 3};
printArray(intArray); // 类型推断为Integer

类型通配符

用于处理未知类型的泛型,通过?表示:

  • <?>:无限制通配符,接受任何类型。
  • <? extends T>:上界通配符,接受T或其子类。
  • <? super T>:下界通配符,接受T或其父类。

示例

public void processList(List<? extends Number> list) {
    for (Number num : list) {
        System.out.println(num);
    }
}

泛型限制

  1. 不能实例化泛型类型
    T obj = new T(); // 编译错误
  2. 不能用于静态变量:静态成员属于类,无法使用实例化的类型参数。
  3. 类型擦除:泛型信息在编译后被擦除,运行时无法获取具体类型。

实际应用场景

  • 集合框架:如ArrayList<String>确保类型安全。
  • 工具类:通用算法(如排序、比较)通过泛型实现复用。
  • 回调机制:如Comparator<T>接口支持多种类型比较。

通过泛型,Java实现了代码重用与类型安全的平衡,减少冗余代码和运行时错误。

分享给朋友:

相关文章

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

java中如何输入

java中如何输入

输入方法 在Java中,可以通过多种方式实现输入操作,具体取决于输入来源和需求。以下是几种常见的输入方法: 使用Scanner类 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读…

react激光如何使用

react激光如何使用

安装React激光库 在项目中安装React激光库,通常通过npm或yarn完成。确保项目已初始化并具备React环境。 npm install react-laser-beam # 或 yar…

react如何使用jquery

react如何使用jquery

在 React 中使用 jQuery React 和 jQuery 的设计理念不同,React 基于虚拟 DOM 和数据驱动,而 jQuery 直接操作真实 DOM。若需在 React 中整合 jQu…

react如何使用agora

react如何使用agora

使用 React 集成 Agora 视频通话 SDK 安装 Agora SDK 在 React 项目中安装 Agora RTC SDK: npm install agora-rtc-sdk 初始化…