2017-02-28 36 views
0

不重複的問題如何陣列轉換成多個變量在Java中

正如我所說向下,我已經檢查瞭如何在Java中使用不同數量則params的工作。它將它們包裝成一個數組,然後繼續。但我需要通過不同數量PARAMS的一個函數,不是數組,因爲它會用JavaScript


我與犀牛,以便在執行一些JavaScript腳本的工作來處理java的。 我試圖儘可能地模塊化代碼,以便於使用。

我有以下函數調用已經是一個JavaScript方法:

MyClass{ 
.... 
    public static Object call(ScriptObjectMirror ctx, String functionName, Object ...args) { 
     ScriptObjectMirror caller = ctxs.get(ctx); // assume this works, it brings correct data 
     return caller.call(ctx, functionName, args); 
    } 
.... 
} 

所以,我讀到這樣Can I pass an array as arguments to a method with variable arguments in Java?

凡明確指出,對象不同的問題......是一樣的對象[]。

然而,當我在JavaScript端的工作,我收到取決於ARGS不同的事情:

可以說,我做以下電話:

MyClass.call(myCtx, "a", true, false); 

它將調用:

caller.call(myCtx, "a", [true, false]); //Javascript prints: [Ljava.lang.Object;@273d3dbb 

但是,如果我跳過MyClass.call的方法來直接調用這樣的javascript函數:

caller.call(myCtx, "a", true, false); //Javascript prints true, false 

THEREFOR

我能理解Java的內部工作正常兩者(對象...和對象[]),因爲我使用的犀牛,我真正需要的是能夠得到ARGS ,並將它們分開。

喜歡的東西:

public static Object call(ScriptObjectMirror ctx, String functionName, Object ...args) { 
    //Pseudocode of what I want to achieve 
    for (arg: args) { 
     arg1 = arg; 
     arg2 = arg; 
     argN = arg; 
    } 
    return caller.call(ctx, functionName, arg1, arg2, ..., argN); 

}

有什麼辦法來實現這一目標? /任何解決方法?

注意

我不能只在JavaScript方面承擔我總是收到不同的參數數組,因爲它可以從很多不同的地方被調用,就意味着要真正重新編寫大量的代碼

+0

你需要在這裏使用可變參數? – LazerBanana

+0

不可以,除非您按照建議事先知道參數的數量。 –

+0

@Krystian_K是的,我知道,因爲它可以接收任意數量的參數 – Mayday

回答

1

你無法完成Java可以做什麼,但你可以做類似的事情。

Javascript函數確實支持接收無限數量的參數。您可以通過arguments關鍵字訪問參數。請致電this

例如:

function foo(){ 
 
    for(var i=0; i<arguments.length; i++){ 
 
    \t  document.write(arguments[i] +'<br />'); 
 
    } 
 
} 
 

 
foo("A", "B", "C", 1, 2, 3);

+0

這是一個體面的解決方法,不完全是我想實現的,但如果我找不到更好的東西,它可以提供幫助。謝謝! – Mayday