将参数从函数传递给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的方式?

+1

你觉得为什么它不工作? – Mritunjay

+0

您可以创建对象并将所有变量存储在那里,但我认为在您的情况下使用'* args'更好 – AndMar

+0

@Mritunjay,因为System.out.printf不会将数组作为参数。 'public static void printf(Object ... o){System.out.printf(o);} \t}'不起作用 – sblack

对于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]); 
+0

您提到这适用于'System.out.printf'的特定情况。第一个参数不是总是需要一个字符串吗?什么情况下不起作用? – sblack

+0

如果参数列表是别的东西,就像我在答案结尾处显示的那样,您需要访问数组的每个元素。你不能只传递'objs'。 @sblack – Sweeper

您可以通过所有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]) 
+0

我不想帮助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

+0

但是这对于像我提供的例子System.out.printf这样的东西是行不通的。 – sblack