2011-12-22 90 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(...)。如果您没有限定方法名称,则应该在本地类作用域中查找匹配声明。