gpt4 book ai didi

java - 如何将参数传递给 java 中的方法,如 python 中的 f(*args)?

转载 作者:太空狗 更新时间:2023-10-29 20:57:09 24 4
gpt4 key购买 nike

在 python 中,我可以这样做:

args = [1,2,3,4]
f(*args) # this calls f(1,2,3,4)

这在 java 中可能吗?

澄清 - f 有一个可变长度的参数列表。

最佳答案

当然,您应该能够使用 vararg-methods 精确地做到这一点.如果您担心在诸如 Object... 之类的参数中出现歧义,这段代码应该澄清:

public class Test {

public static void varargMethod(Object... args) {
System.out.println("Arguments:");
for (Object s : args) System.out.println(s);
}

public static void main(String[] args) throws Exception {
varargMethod("Hello", "World", "!");

String[] someArgs = { "Lorem", "ipsum", "dolor", "sit" };

// Eclipse warns:
// The argument of type String[] should explicitly be cast to Object[]
// for the invocation of the varargs method varargMethod(Object...)
// from type Test. It could alternatively be cast to Object for a
// varargs invocation
varargMethod(someArgs);

// Calls the vararg method with multiple arguments
// (the objects in the array).
varargMethod((Object[]) someArgs);

// Calls the vararg method with a single argument (the object array)
varargMethod((Object) someArgs);
}
}

输出:

Arguments:
Hello
World
!
Arguments:
Lorem
ipsum
dolor
sit
Arguments:
Lorem
ipsum
dolor
sit
Arguments:
[Ljava.lang.String;@1d9f953d

对于非可变参数方法,您不能这样做。但是,非可变参数方法具有固定数量的参数,因此您应该能够做到

nonVarargMethod(args[0], args[1], args[2]);

而且,没有办法让编译器根据数组的大小或类型解决重载方法的情况

关于java - 如何将参数传递给 java 中的方法,如 python 中的 f(*args)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com