2016-12-14 36 views
-1

我有3x4x5(或更多維數組)數組,我希望每個位置都將座標傳遞給lambda函數。
但是我可以得到_D,.. 3D,2D或1D閉包,我需要模擬(對於這個例子)12x5陣列和60位陣列。是否可以檢測閉包中的參數數量並據此執行?

是否有可能在java中獲得的參數數量沒有太多的開銷,並以這種方式調用?我是否可以省略反思並以其他方式進行或不可避免?

---編輯---

使用可變參數不是一個選項作爲操作創建職能之前定義,或者我們不想使代碼過於複雜。因此,例如,當我們有三維數組時,通常3D閉包可以通過(x,y,z,val){}訪問,那麼對於二維閉包,我需要識別這種類型的lambda,並使用它像(x + y * X.length,Z,VAL)。

+7

請顯示一些代碼。 –

+0

你的意思是'(int ... args) - > {int n = args.length; ...} – ZhongYu

+1

真的。添加代碼示例。 – Holger

回答

0

這沒有什麼意義。每個變量都有一個類型。沒有「封閉式」。相反,lambda表達式可用於需要函數接口類型(接口只有一個方法)的上下文中,並且lambda表達式將評估爲實現該接口的對象。

由於您只有一個方法的已知接口,該方法有一個已知的簽名,它具有已知數量的參數。因此,你不知道參數的數量是沒有意義的。

相關問題