我有一个接口,在接口中我想声明一个方法,这样它可以将任意数量的对象作为输入。
这样的事情:
interface Implementable{
public ReturnObj doIt(objects ....);
}
请告知
答案 0 :(得分:5)
在您的情况下,正确的语法是:
interface Implementable{
public ReturnObj doIt(Object... objs);
}
找到var-arg方法的官方文档here。
我正要问varargs和传递数组之间的区别
Varargs被编译成数组类型的参数。唯一的区别在于vararg语法,方法调用如
doIt("hello", "world");
将编译成
doIt(new Object[] { "hello", "world" });
换句话说,给出一个声明,如
public ReturnObj doIt(Object[] objs);
你会有
doIt(new Object[] { "hello", "world" }); // works fine
doIt("hello", "world"); // won't compile
给定var-arg声明时,两个方法调用都将编译并等效。
答案 1 :(得分:3)
传递数组:
public ReturnObj doIt(Object[] input);
或使用等效的varargs表达式
public ReturnObj doIt(Object... input);
答案 2 :(得分:1)
示例:
interface Implementable{
public ReturnObj doIt(Object... object);
}
或者(我更喜欢,尤其是在Web服务设计中):
interface Implementable{
public ReturnObj doIt(Object[] object);
}
答案 3 :(得分:0)
您忘了提问,但假设您想知道如何声明一个采用可变数量参数的方法,请查看以下链接:
http://download.oracle.com/javase/1,5.0/docs/guide/language/varargs.html
所以它会是
interface Implementable{
public ReturnObj doIt(Object... objects);
}