Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多输入java的方法_Java_Interface - Fatal编程技术网

多输入java的方法

多输入java的方法,java,interface,Java,Interface,我有一个接口,我想在接口中声明一个方法,这样它可以接受任意数量的对象作为输入 大概是这样的: interface Implementable{ public ReturnObj doIt(objects ....); } 请告知在您的情况下,正确的语法是: interface Implementable{ public ReturnObj doIt(Object... objs); } 可以找到var-arg方法的官方文档 我正要问varargs和传递数组之间的区别, Va

我有一个接口,我想在接口中声明一个方法,这样它可以接受任意数量的对象作为输入

大概是这样的:

interface Implementable{
     public ReturnObj doIt(objects ....);
}

请告知

在您的情况下,正确的语法是:

interface Implementable{
    public ReturnObj doIt(Object... objs);
}
可以找到var-arg方法的官方文档

我正要问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声明时,两个方法调用都将编译并等效。

在您的情况下,正确的语法是:

interface Implementable{
    public ReturnObj doIt(Object... objs);
}
可以找到var-arg方法的官方文档

我正要问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声明时,两个方法调用都将编译并等效。

传递一个数组:

public ReturnObj doIt(Object[] input);
或者使用等效的varargs表达式

public ReturnObj doIt(Object... input);
传递数组:

public ReturnObj doIt(Object[] input);
或者使用等效的varargs表达式

public ReturnObj doIt(Object... input);
  • 你需要先了解
  • 问题是什么
  • 例如:

    interface Implementable{
        public ReturnObj doIt(Object... object);
    }
    
    或者(我更喜欢,尤其是在Web服务设计中):

  • 你需要先了解
  • 问题是什么
  • 例如:

    interface Implementable{
        public ReturnObj doIt(Object... object);
    }
    
    或者(我更喜欢,尤其是在Web服务设计中):


    您忘了问一个问题,但假设您想知道如何声明一个采用可变参数数的方法,请查看以下链接:

    是的

    interface Implementable{
    
             public ReturnObj doIt(Object... objects);
    }
    

    您忘了问一个问题,但假设您想知道如何声明一个采用可变参数数的方法,请查看以下链接:

    是的

    interface Implementable{
    
             public ReturnObj doIt(Object... objects);
    }
    

    public ReturnObj doIt(Object…o)应该可以工作。请看@aioobe:这是一个很好的编辑:D“想要”我没有完成我的问题。没有检查,我按下了按钮。我正要问varargs和传递数组之间的区别,我得到了答案。。。感谢大家
    public ReturnObj doIt(Object…o)应该可以工作。请看@aioobe:这是一个很好的编辑:D“想要”我没有完成我的问题。没有检查,我按下了按钮。我正要问varargs和传递数组之间的区别,我得到了答案。。。多亏了你们所有人,嗯,我不会说它们是等价的。@aioobe-让我们说:在这个简单的例子中,它们是等价的。langspec如果最后一个形式参数是T类型的变量arity参数,则可以将其定义为T[]True类型的形式参数,但在方法调用的存在下,例如
    o.doIt()
    一个有效,另一个无效……嗯,我不想说它们是等价的。@aioobe-比如说:在这个简单的示例中,他们是。langspec如果最后一个形式参数是T类型的变量arity参数,则可以考虑定义T[]True类型的形式参数,但在方法调用的存在下,例如
    o.doIt()
    一个有效,另一个无效。。。