可变参数
Java编译错误我创建了下面的方法库:可变参数
protected static int foo(String strParam, Object... params)
我这个库链接到我的申请,调用方法:
foo("a","b")
,但它并不能编译,我收到以下错误消息: 实际参数字符串不能通过方法调用转换转换为Object []。
有什么想法吗?
工作对我来说:
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
某处(即过载方法)? - 你确定你没有将旧版本的代码“链接”(无论对你意味着什么)吗?
您使用的是什么JDK版本? - > JDK 1.5_22 – user954469 2011-12-22 17:00:23
您使用的是Java的源/类版本? “5”以下的任何内容都是无用的。 - >我使用-target 1.5和source 1.5进行编译 – user954469 2011-12-22 17:00:54
是否有其他称为foo的方法(即重载方法)? - > NO – user954469 2011-12-22 17:01:05
该方法是protected
。该调用是发生在同一个包中的一个类中,还是发生在一个子类中?如果没有,则调用者看不到foo
的这个定义。我不明白为什么它会导致那个特定的错误。这可能是编译器试图将其与不同方法签名进行匹配的证据。
你的电话真的只是foo(...)
?我希望能看到包含类的名称,因为它是一种静态方法 - 即LibraryClass.foo(...)
。如果您没有限定方法名称,则应该在本地类作用域中查找匹配声明。
你从哪个Java版本调用它? – SLaks 2011-12-22 16:47:26