当前位置:首页 > Java

java泛型如何使用

2026-03-03 10:53:48Java

泛型的基本概念

Java泛型是一种在编译时进行类型检查的机制,允许开发者定义类、接口或方法时使用类型参数。泛型的核心目的是提高代码复用性和类型安全性,避免运行时类型转换错误。

泛型类定义

在类名后添加尖括号<>声明类型参数,例如T。类内部可以使用该类型参数作为字段、方法参数或返回值类型:

public class Box<T> {
    private T content;
    public void setContent(T content) {
        this.content = content;
    }
    public T getContent() {
        return content;
    }
}

使用时指定具体类型:

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

泛型方法

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

java泛型如何使用

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

调用时编译器会推断类型:

Integer[] intArray = {1, 2, 3};
printArray(intArray); // 自动推断E为Integer

类型通配符

使用?表示未知类型,常用于泛型集合的灵活性处理:

  • List<?>:接受任何类型的List
  • List<? extends Number>:接受Number及其子类(上界通配符)
  • List<? super Integer>:接受Integer及其父类(下界通配符)

示例:

java泛型如何使用

public static double sum(List<? extends Number> list) {
    double sum = 0;
    for (Number num : list) {
        sum += num.doubleValue();
    }
    return sum;
}

泛型接口

接口定义方式与类类似:

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

实现时需指定具体类型:

public class OrderedPair<K, V> implements Pair<K, V> {
    private K key;
    private V value;
    // 实现接口方法...
}

类型擦除

Java泛型在编译后会进行类型擦除,转换为原始类型。例如List<String>编译后变为List,元素类型变为Object。运行时无法获取泛型的具体类型信息。

注意事项

  • 不能使用基本类型作为泛型参数(如List<int>非法,需用List<Integer>
  • 无法直接创建泛型数组(如new List<String>[10]非法)
  • 静态方法或静态变量不能使用类的泛型类型参数

通过合理使用泛型,可以显著提升代码的类型安全性和可读性,同时减少类型转换的冗余代码。

分享给朋友:

相关文章

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

如何精通java

如何精通java

理解Java核心概念 Java的基础知识包括数据类型、变量、运算符、控制流语句(如循环和条件判断)、数组以及面向对象编程(OOP)的核心概念(类、对象、继承、多态、封装)。熟练掌握这些内容是后续学习的…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…

react如何使用echarts

react如何使用echarts

安装 ECharts 和 React 适配库 在 React 项目中使用 ECharts 需要安装 ECharts 核心库及其 React 适配库。通过 npm 或 yarn 安装: npm ins…

react如何使用插槽

react如何使用插槽

使用props.children实现基础插槽 React中插槽的核心是通过props.children传递子组件。父组件在标签内部放置的内容会自动成为children属性: // 父组件 <C…