当前位置: 首页 > 知识库问答 >
问题:

直接将数组初始值设定项传递给方法参数不起作用

龚玄天
2023-03-14
package arraypkg;

import java.util.Arrays;

public class Main
{
    private static void foo(Object o[])
    {
        System.out.printf("%s", Arrays.toString(o));
    }

    public static void main(String[] args)
    {
       Object []o=new Object[]{1,2,3,4,5};
       foo(o);                     //Passing an array of objects to the foo() method.

       foo(new Object[]{6,7,8,9}); //This is valid as obvious.

       Object[] o1 = {1, 2};      //This is also fine.
       foo(o1);

       foo({1,2});               //This looks something similar to the preceding one. This is however wrong and doesn't compile - not a statement.
    }
}

在前面的代码段中,除最后一个表达式外,所有表达式都已编译并正常运行。虽然最后一条语句看起来与其立即语句类似,但编译器会发出编译时错误—表达式的非法开始—而不是语句。为什么?

共有3个答案

公西翼
2023-03-14

foo({1,2});不是数组。

并且由于您的foo()方法采用数组类型参数,因此失败。

淳于健
2023-03-14

<代码>foo({1,2}) 不告诉它是什么类型的数组。因此,编译器无法理解语法。所有其他声明都指定了数组的类型。

晋奕
2023-03-14
foo({1,2});

{1,2}这种数组初始化仅在您声明数组的地方有效...在其他地方,您必须使用new关键字创建它...

这就是为什么:-

Object[] obj = {1, 2};

很好。。这是因为,数组的类型由我们在LHS上使用的引用类型暗示。。但是,当我们在其他地方使用它时,编译器无法找到类型(就像您的情况一样)。。

尝试使用:-

  foo(new Object[]{1,2});
 类似资料:
  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具

  • 问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。

  • 问题内容: 是否可以使用数据绑定库将自定义参数传递给方法?我有需要使用onClickListener的布局xml文件: 我在这里有我的点击处理程序代码: 是否可以将我的CategoryViewModel对象从xml传递到单击处理程序? 问题答案: 您可以使用lambda表达式并将视图作为参数传递。 如果需要视图,也可以通过以下方法传递它:

  • 问题内容: 我需要在ajax请求中将参数传递给服务器。请参见下面的代码。范围:查看范围 没有f:param 托管豆 在这种情况下,方法onCostoBrutoChange()确实会被调用。但是,当我包含f:param时,它不会被调用。请参见下面的代码。 使用f:param 托管豆 无法识别此代码中的错误内容。请指导。 谢谢,Shikha 问题答案: 该只,而不是在输入链接和按钮的工作原理。 如果您

  • 问题内容: 我尝试发射 可以通过触发参数化的构建来工作,但是问题是没有值传递给构建(即使在作业中设置了令牌,这也很奇怪,我可以在没有它的情况下触发作业)。在jenkins中,该作业具有配置的字符串“ PARAMETER”,带有或不带有某些默认值,但绝不会传递curl启动中的参数。我可能会缺少什么? 问题答案: 我正在使用: 在这里,它就像一种魅力。 注意您粘贴的URL中“ PARAMETER”前面

  • 我有办法 我想知道如果它真的创建了用户,我是否可以对其进行单元测试。但是它没有参数。 我尝试了以下方法: 然而,这实际上让我通过了与扫描仪的争论,这显然是我在测试中无法做到的。还尝试了其他逻辑。我也尝试过使用when(),,,但我找不到解决这个问题的方法,因为我对模仿还比较陌生。 有人能和我分享一些想法吗?