当前位置:首页 > Java

java 泛型如何使用

2026-03-04 02:18:30Java

泛型的基本概念

Java泛型是JDK 5引入的特性,允许在定义类、接口或方法时使用类型参数。泛型的核心目的是提高代码复用性和类型安全性,避免运行时类型转换错误。

泛型类的定义

通过尖括号<>声明类型参数,例如:

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(); // 无需强制转换

泛型方法的定义

方法也可以独立使用泛型,类型参数放在返回类型前:

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

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

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

类型通配符

使用?表示未知类型,常用于方法参数:

public void processList(List<?> list) {
    for (Object elem : list) {
        System.out.println(elem);
    }
}

受限通配符:

  • <? extends Number> 表示Number或其子类
  • <? super Integer> 表示Integer或其父类

泛型接口

接口同样可以使用泛型:

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,因此以下操作是非法的:

java 泛型如何使用

// 编译错误
if (list instanceof List<String>) { ... }

最佳实践

  • 尽量使用泛型集合而非原始类型(如优先List<String>而非List
  • 避免在静态上下文中使用类的类型参数
  • 合理使用通配符提高API灵活性
  • 注意泛型数组的创建限制(不能直接new T[]

通过泛型可以显著减少类型转换代码,同时提供编译时类型检查,是Java类型系统的重要补充。

分享给朋友:

相关文章

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何处理高并发

java如何处理高并发

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

react refs 如何使用

react refs 如何使用

React Refs 的基本概念 Refs 是 React 提供的一种访问 DOM 节点或 React 组件实例的方式。通常在 React 的数据流中,父子组件通过 props 进行通信,但在某些情况…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…