将参数从函数传递给Java中的内部函数?
编辑:澄清,我想java代码的相当于。将参数从函数传递给Java中的内部函数?
如何将函数中的所有参数传递给在其中调用的另一个函数。这在Python是可能以下列方式:
def p(*args):
print(*args)
我知道多个参数可以在Java中使用Object... objects
传递,但我不知道如何通过“拆包”的阵列将它们传递到内部功能。我试图完成的一个例子:
public static void printf(Objects object) {
System.out.printf(objects)
//I don't believe that this works, but it's the jist of what I want to do
}
有没有更好的方法来做这样的事情或更像Java的方式?
对于System.out.printf
的具体情况,这是非常可能的。因为printf
有一个参数列表(String, Object...)
。你可以这样做:
private static void foo(String s, Object... objs) {
System.out.printf(s, objs);
}
基本上可以通过Object...
类型的参数,需要一个Object...
或Object[]
另一种方法。
但是,您不能做的是将Object...
传递给预期为5 Object
s的方法。
private static void foo(Object... objs) {
bar(objs)
}
private static void bar(Object a, Object b, Object c, Object d, Object e) {
}
你必须传递参数逐一:
bar(objs[0], objs[1], objs[2], objs[3], objs[4]);
您可以通过所有ARGS一起:
def func1(*args):
print 'Hi, my name is func1'
print 'Now I will call func2 with all args'
func2(*args)
或者,如果你只是想通过一些ARGS:
def func1(*args):
print 'Hi, my name is func1'
print 'Now I will call func2 with only two args'
func2(args[1], args[5])
我不想帮助python。我想要python代码的java等价物。 – sblack
可以使用...
public static void foo(Object... args) {
for (Object arg : args) {
System.out.println(arg); // do something here
}
}
呼叫它来自你想要的这样的地方
foo("1", "2", "3" , 1 , 1.2 , 1231 , "hello"); // you can pass as many as you want
但是这对于像我提供的例子System.out.printf这样的东西是行不通的。 – sblack
你觉得为什么它不工作? – Mritunjay
您可以创建对象并将所有变量存储在那里,但我认为在您的情况下使用'* args'更好 – AndMar
@Mritunjay,因为System.out.printf不会将数组作为参数。 'public static void printf(Object ... o){System.out.printf(o);} \t}'不起作用 – sblack