2011-12-22 91 views
1

Java編譯錯誤我創建了下面的方法庫:可變參數

protected static int foo(String strParam, Object... params) 

我這個庫鏈接到我的申請,調用方法:

foo("a","b") 

,但它並不能編譯,我收到以下錯誤消息: 實際參數字符串不能通過方法調用轉換轉換爲Object []。

有什麼想法嗎?

+6

你從哪個Java版本調用它? – SLaks 2011-12-22 16:47:26

回答

3

工作對我來說:

public class XXX extends Lib { 
    public static void main(String[] args) { 
     foo("a", "b"); 
    } 
} 

class Lib{ 
    protected static int foo(String str, Object... args) { 
     return 42; 
    } 
} 

所以:

什麼JDK版本是您使用
  • 您使用的是Java的源/類版本? 「5」以下的任何內容都是無用的。
  • 是否有其他方法foo某處(即過載方法)?
  • 你確定你沒有將舊版本的代碼「鏈接」(無論對你意味着什麼)嗎?
+0

您使用的是什麼JDK版本? - > JDK 1.5_22 – user954469 2011-12-22 17:00:23

+0

您使用的是Java的源/類版本? 「5」以下的任何內容都是無用的。 - >我使用-target 1.5和source 1.5進行編譯 – user954469 2011-12-22 17:00:54

+0

是否有其他稱爲foo的方法(即重載方法)? - > NO – user954469 2011-12-22 17:01:05

0

該方法是protected。該調用是發生在同一個包中的一個類中,還是發生在一個子類中?如果沒有,則調用者看不到foo的這個定義。我不明白爲什麼它會導致那個特定的錯誤。這可能是編譯器試圖將其與不同方法簽名進行匹配的證據。

你的電話真的只是foo(...)?我希望能看到包含類的名稱,因爲它是一種靜態方法 - 即LibraryClass.foo(...)。如果您沒有限定方法名稱,則應該在本地類作用域中查找匹配聲明。