当前位置:首页 > 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(); // 无需强制转换

泛型方法的定义

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

java 泛型如何使用

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);
    }
}

受限通配符:

java 泛型如何使用

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

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

最佳实践

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

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

分享给朋友:

相关文章

java如何安装

java如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

uniapp中如何使用iconfont

uniapp中如何使用iconfont

使用 Iconfont 在 Uniapp 中的步骤 下载 Iconfont 资源 访问 Iconfont 官网,选择需要的图标并添加到项目。下载时选择 Font class 格式,解压后会得到 .tt…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…