当前位置:首页 > Java

java如何使用泛型

2026-02-04 23:55:43Java

泛型的基本概念

泛型允许在定义类、接口或方法时使用类型参数,使用时指定具体类型。泛型提高了代码的可重用性和类型安全性,避免了强制类型转换。

泛型类

在类名后添加类型参数 <T>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(); // 无需强制类型转换

泛型方法

在方法返回类型前声明类型参数 <T>,泛型方法可以在非泛型类中定义。

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

使用示例:

Integer[] intArray = {1, 2, 3};
String[] strArray = {"A", "B", "C"};
printArray(intArray); // 自动推断类型为Integer
printArray(strArray); // 自动推断类型为String

泛型接口

接口也可以定义类型参数,实现类需指定具体类型或保持泛型。

public interface List<T> {
    void add(T element);
    T get(int index);
}

实现示例:

public class StringList implements List<String> {
    private ArrayList<String> items = new ArrayList<>();

    @Override
    public void add(String element) {
        items.add(element);
    }

    @Override
    public String get(int index) {
        return items.get(index);
    }
}

类型通配符

使用 ? 表示未知类型,通常用于限制泛型的灵活性。

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

示例:

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

此方法接受 List<Integer>List<Double> 等参数,但不接受 List<String>

java如何使用泛型

泛型限制

  • 不能使用基本类型(如 intdouble),必须用包装类(如 IntegerDouble)。
  • 不能直接实例化泛型类型数组(如 new T[10]),但可以通过反射或强制类型转换实现。
  • 静态上下文中不能使用类的类型参数(静态方法需独立声明泛型)。

实际应用场景

  • 集合框架(如 ArrayList<T>HashMap<K,V>)。
  • 工具类(如 Collections.sort() 的泛型方法)。
  • 避免重复代码,实现通用算法(如排序、比较)。

通过泛型,Java 代码在编译时即可捕获类型错误,减少运行时异常,同时增强代码可读性和维护性。

分享给朋友:

相关文章

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

java如何自学

java如何自学

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

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…

如何学好java

如何学好java

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

java如何产生随机数

java如何产生随机数

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

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…