当前位置:首页 > Java

java通配符如何使用

2026-03-21 12:35:16Java

通配符的基本概念

Java中的通配符(Wildcard)主要用于泛型中,表示为?,用来表示未知类型。通配符可以提高代码的灵活性,尤其是在处理泛型集合时。

通配符的分类

Java通配符分为三种:无界通配符、上界通配符和下界通配符。

无界通配符

无界通配符使用<?>表示,可以接受任何类型的参数。通常用于方法参数中,表示不关心具体的类型。

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

上界通配符

上界通配符使用<? extends T>表示,表示类型必须是T或其子类。适用于需要读取数据的场景。

public double sumOfList(List<? extends Number> list) {
    double sum = 0.0;
    for (Number num : list) {
        sum += num.doubleValue();
    }
    return sum;
}

下界通配符

下界通配符使用<? super T>表示,表示类型必须是T或其父类。适用于需要写入数据的场景。

public void addNumbers(List<? super Integer> list) {
    for (int i = 1; i <= 10; i++) {
        list.add(i);
    }
}

通配符的使用场景

  • 无界通配符:适用于不需要关心具体类型的场景,如打印集合内容。
  • 上界通配符:适用于需要从集合中读取数据的场景,确保类型安全。
  • 下界通配符:适用于需要向集合中写入数据的场景,确保类型安全。

通配符的注意事项

  • 通配符不能用于创建泛型类的实例,如List<?> list = new ArrayList<?>();是错误的。
  • 通配符通常用于方法参数或返回值类型,提高代码的灵活性。
  • 使用通配符时需注意类型安全,避免在运行时出现类型转换异常。

示例代码

以下是一个综合示例,展示三种通配符的用法:

java通配符如何使用

import java.util.ArrayList;
import java.util.List;

public class WildcardExample {
    // 无界通配符
    public static void printList(List<?> list) {
        for (Object elem : list) {
            System.out.print(elem + " ");
        }
        System.out.println();
    }

    // 上界通配符
    public static double sum(List<? extends Number> list) {
        double sum = 0.0;
        for (Number num : list) {
            sum += num.doubleValue();
        }
        return sum;
    }

    // 下界通配符
    public static void addIntegers(List<? super Integer> list) {
        for (int i = 1; i <= 5; i++) {
            list.add(i);
        }
    }

    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<>();
        addIntegers(intList);
        printList(intList);
        System.out.println("Sum: " + sum(intList));
    }
}

分享给朋友:

相关文章

react filter如何使用

react filter如何使用

react filter 的基本用法 在 React 中,filter 通常用于筛选数组数据,常见于列表渲染或数据处理场景。filter 是 JavaScript 数组的原生方法,但在 React 中…

react 如何使用axios

react 如何使用axios

安装 axios 在 React 项目中安装 axios 依赖包: npm install axios # 或 yarn add axios 引入 axios 在需要发送 HTTP 请求的组件或文件…

react如何使用link

react如何使用link

使用 Link 组件进行页面导航 在 React 中,Link 是 react-router-dom 提供的组件,用于在单页应用(SPA)中实现客户端路由导航,避免页面刷新。 安装 react-…

react中如何使用ajax

react中如何使用ajax

在React中使用AJAX React本身不提供AJAX功能,但可以通过以下几种方式实现AJAX请求: 使用原生fetch API fetch是现代浏览器内置的API,无需额外安装库即可使用: f…

react如何使用link跳转

react如何使用link跳转

使用 React Router 的 Link 组件 在 React 应用中实现页面跳转,通常使用 react-router-dom 库提供的 Link 组件。Link 组件允许在不刷新页面的情况下进行…

react调试工具如何使用

react调试工具如何使用

安装React调试工具 React调试工具通常以浏览器扩展形式提供。主流浏览器如Chrome、Firefox、Edge均可通过各自的应用商店安装。Chrome用户可访问Chrome网上应用店搜索"Re…