当前位置:首页 > Java

java通配符如何使用

2026-03-21 12:35:16Java

通配符的基本概念

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

通配符的分类

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

java通配符如何使用

无界通配符

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

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

上界通配符

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

java通配符如何使用

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<?>();是错误的。
  • 通配符通常用于方法参数或返回值类型,提高代码的灵活性。
  • 使用通配符时需注意类型安全,避免在运行时出现类型转换异常。

示例代码

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

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如何使用函数

react如何使用函数

使用函数组件的基本语法 在React中,函数组件是通过JavaScript函数定义的组件。函数接收props作为参数,并返回React元素。 function Welcome(props) {…

react如何使用jquery

react如何使用jquery

在 React 中使用 jQuery React 和 jQuery 的设计理念不同,React 基于虚拟 DOM 和数据驱动,而 jQuery 直接操作真实 DOM。若需在 React 中整合 jQu…

react如何使用axios

react如何使用axios

安装 Axios 在 React 项目中安装 Axios,可以通过 npm 或 yarn 进行安装: npm install axios 或 yarn add axios 导入 Axios 在需要…

react如何使用link

react如何使用link

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

react如何使用less

react如何使用less

使用 Less 在 React 项目中 要在 React 项目中使用 Less,需要安装相关依赖并配置构建工具(如 Webpack 或 Create React App 的配置覆盖)。以下是具体方法:…

React如何使用防抖

React如何使用防抖

防抖的基本概念 防抖(Debounce)是一种限制函数执行频率的技术,确保函数在连续触发时只执行一次。在React中,常用于输入框搜索、窗口大小调整等高频事件场景。 使用Lodash实现防抖 Lod…