当前位置: 首页 > 面试题库 >

参数列表中的Java数组初始化

云联
2023-03-14
问题内容

如果没有明确指出它是String [],那么第一次调用someMethod怎么不编译?

使用数组初始化器创建String []数组很好,但是不能使用它传递参数。花括号是否以其他方式用于传递参数,从而使我期望其表现出轨?

public void someMethod(String[] arr){
    //do some magic
}

public void makeSomeMagic(){

    String[] arr = {"cat", "fish", "cow"};

    //Does not compile!
    someMethod({"cat", "fish", "cow"});

    //This compiles!
    someMethod(new String[]{"cat", "fish", "cow"});

    //This compiles!
    someMethod(arr);
}

编译器错误如下:

Moo类型的someMethod(String [])方法不适用于参数(字符串,字符串,字符串)


问题答案:

您只能{ "hello", "world" }在声明数组变量或在数组创建表达式(例如)中使用初始化符号new String[] { ... }

请参阅Java语言规范中的10.6数组初始化程序:

数组初始值设定项可以在声明中指定,也可以作为数组创建表达式(第15.10节)的一部分指定,以创建数组并提供一些初始值



 类似资料:
  • 问题内容: 数组初始化列表中使用的逗号分隔符可以以C结束列表,这在 Kernighan&Ritchie编写的C编程语言第二版中 有所提及。 例如 当列表很长时,这很方便,并且不想在添加项目时更改/检查上一行 但是,在Java中,我可以观察到两种不同的行为: 在Eclipse中,当某些版本的maven编译器插件抱怨并引发编译错误时,结尾被接受。 但是,在 Flanagan的Java 书中我没有提到任

  • 我想在arraylist中传递值,并且初始化良好。但有一个错误- 线程“main”java.lang.IndexOutOfBoundsException:索引:3,大小:0 我正在努力,这是我的代码-

  • 上一节中我们给大家介绍了Fullpage的基本用法,可能很多用户有个性化的需求,没关系Fullpage提供了多个参数,我们可以配置这些参数,满足我们项目的需求。 controlArrows 默认值:true,决定是否使用控制箭头向左或向右移动幻灯片。 verticalCentered 默认值:true,决定是否初始化后,是否垂直居中网页的内容,如果你想自定义元素的位置,那么你可以设置为false,

  • 如下 ServletContext 接口方法允许 servlet 访问由应用开发人员在Web 应用中的部署描述符中指定的上下文初始化参数: getInitParameter getInitParameterNames 应用开发人员使用初始化参数来表达配置信息。代表性的例子是一个网络管理员的 e-mail 地址,或保存关键数据的系统名称。

  • 问题内容: 我知道当我初始化一个char数组时: 要么 为什么不喜欢 初始化数组: 为什么它们不同?它是Java哲学的本质之一还是其​​背后的某些原因? 问题答案: 如果您曾经使用过 C ,那么答案就非常简单。在 C语言中 ,创建数组的方式是在堆栈上分配一个足以容纳元素数量的静态内存长度,并使用指针指向第一个元素-或堆上动态内存长度,然后用指针指向第一个元素。 在 C ++中 ,第二个版本已更改为

  • 在下面的示例中,我需要初始化A::A(H H)构造函数初始值设定项列表中的std::array(因为类H没有默认的构造函数),但我不能使用初始值设定项列表,因为数组大小是一个模板参数。 有办法解决这个问题吗?