首页 > Java > java教程 > Java 的变量参数 (Varargs) 可以接受数组作为参数吗?

Java 的变量参数 (Varargs) 可以接受数组作为参数吗?

Mary-Kate Olsen
发布: 2024-12-30 19:36:14
原创
261 人浏览过

Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?

数组可以作为参数传递给 Java 中带有变量参数的方法吗?

考虑以下方法:

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}
登录后复制

目的是将 args 单独传递给 String.format,但正如 myFormat 对待的那样

Java 的 Varargs(变量参数)

Java 的语法糖 T... 对应于 T[]。根据Java语言规范(JLS 8.4.1),最终的形式参数可以是变量arity,它将其视为指定类型的数组。因此,可变数量方法接受可变数量的参数。此类方法的调用可以包含比形式参数更多的实际参数。

解决方案

为了实现所需的行为,可以将数组传递给具有可变参数的方法。基本原则是数组中的每个对象都作为单独的参数传递。

这是一个演示示例:

public static String ezFormat(Object... args) {
    String format = new String(new char[args.length])
        .replace("", "[ %s ]");
    return String.format(format, args);
}

public static void main(String... args) {
    System.out.println(ezFormat("A", "B", "C"));
    // prints "[ A ][ B ][ C ]"
}
登录后复制

注意 String... 是相当于 String[].

Varargs陷阱

  • 传递 Null: 调用仅包含 null 值的 varargs 方法将导致 NullPointerException。要传递单个 null 值,请使用 new Object[] { null } 或 (Object) null。
  • 添加额外参数: 要在使用可变参数传递数组时添加额外参数,请创建一个新数组来容纳额外的元素。
  • 传递基元数组: 仅支持 Varargs参考类型。要传递基元的值,请将它们转换为相应包装类的数组。

以上是Java 的变量参数 (Varargs) 可以接受数组作为参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板