当前位置:首页 > 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类型系统的重要补充。

分享给朋友:

相关文章

uniapp中如何使用iconfont

uniapp中如何使用iconfont

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

如何使用ink react

如何使用ink react

安装 Ink 和 React 在项目目录下运行以下命令安装 Ink 和 React 的依赖: npm install ink react 创建基础组件 创建一个简单的 Ink 组件,例如 Hello…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.Arra…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…