当前位置:首页 > 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是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

hashrouter如何使用react

hashrouter如何使用react

使用 HashRouter 在 React 中的方法 安装 react-router-dom 确保项目中已安装 react-router-dom,若未安装,可通过以下命令安装: npm inst…

react 如何使用 apply

react 如何使用 apply

使用 apply 方法的基本概念 在 JavaScript 中,apply 是函数原型上的方法,用于调用函数时指定 this 的值和传递参数数组。React 中可以使用 apply 来绑定组件方法或调…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

java版本如何查看

java版本如何查看

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

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…