java - var-args 只能用作方法参数吗?

标签 java variadic-functions

编译正常:-

public class Demo {

    public static void main(String... args) {

    }
}

但这没有被编译。

public class Demo {

    public static void main(String... args) {
        String... strVarArgs ;

        //here i initiallize strVarArgs by some logic, like we do for arrays
    }
}

如果我的语法错误,请纠正我。 :-)


cletus 写道:- 它实际上只是数组的语法糖

下面是一个示例,后面是来自一本非常流行的 java 书籍的声明,作者是 Kathy Sierra 和 Bert Bates(Head First Java,第二版,McGraw-Hill/Osborne):-

主题泛型,

<T extends MyClass> ,其中 MyClass 是一个类,并且

<T extends MyInterface> ,其中 MyInterface 是一个接口(interface)。

以下是从书中复制的内容(第 548 页,第 16 章):-

在泛型中,“扩展”意味着“扩展或实现”??? java 工程师必须为您提供一种对参数化类型施加约束的方法,以便您可以将其限制为。但您还需要限制类型以仅允许实现特定接口(interface)的类。因此,在这种情况下,我们需要一种语法来同时适用于继承和实现这两种情况。换句话说,这对于扩展和实现都有效。 获胜词是……延伸。 每当 Sun 工程师有机会重用现有关键字时,就像他们在此处使用“extends”所做的那样,他们通常会这样做。但有时他们没有选择......(断言,枚举)。

我的问题:var-args 是否只是数组的语法糖,除了数组之外没有其他功能???

最佳答案

是的,可变参数仅适用于函数参数。

它实际上只是数组的语法糖,所以而不是:

String... strVarArgs ;

你想要

String strVarArgs[];

关于java - var-args 只能用作方法参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514422/

相关文章:

java - 为什么 Java 可变参数不支持集合?

c - 变量参数列表打印垃圾

java - 同步线程池ExecutorService

java - Spring中使用JsonFilter动态序列化

java - Web 应用程序中的依赖类出现 NoClassDefFoundError

android - Kotlin (Android) - 为非可变函数传播一个数组/列表

c++ - 可变参数宏 : how to solve "too many actual parameters for macro.."

java - 我无法从 JSP 页面调用带有 varargs 的方法

java - 不可变中的可变项

java - ServletRequest.getServletContext() 的 UnsupportedOperationException