您可以定義接受任何東西的方法(Object... arguments)
但是,如果您使用("A", "B")
和(["A", "B"])
調用它,則arguments
的值將與["A", "B"]
相同 - 即原始簽名將丟失。方法接受任何東西並保留簽名?
有什麼辦法可以保存它嗎?
P.S.爲什麼我需要它:
要記住被調用的方法和參數,然後通過反射回復它。當它打破例如:
有一個對象與方法我想以後調用:
MyObj {
myMeth (String[] array) {...}
}
myObj = new MyObj()
我告訴計算機與一些參數以後調用它。
callLater(myObj, "myMeth", ["A", "B"])
它記得它和用戶反射找到實際的方法並調用它。 它失敗了,因爲原始簽名丟失了,而不是(String[])
它試圖找到(String, String)
。
如果正確地記得在反射,可變參數被處理的作爲數組總是。所以你需要能夠搜索'Object []'作爲方法參數 – MadProgrammer
'原始簽名將會丟失'並不意味着什麼。它不會丟失。它只是通過兩個不同的參數列表來調用,這是整個想法。目前尚不清楚你的問題實際上是什麼。 – EJP