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

在构造函数中使用数组常量时出现编译器错误

陆俊捷
2023-03-14
问题内容
public class Sonnet29 implements Poem {
    private String[] poem;
    public Sonnet29() {
        poem = { "foo", "bar" , "baz"};
    }
    @Override
    public void recite() {
      //...
    }
}

poem = { "foo", "bar" , "baz"};给出了编译错误。

为何不允许这样做的任何特定原因?如何使用数组常量初始化String数组?

编辑:谢谢大家的回答。现在,我很清楚什么是允许的,什么是不允许的。但是我能问你 为什么 不允许这样做吗?

String[] pets;
pets = {"cat", "dog"};

仔细搜索一下之后,我发现了这个链接,在其中,被告知像这样的编码使编译器不明确-
宠物应该是String数组还是Objects数组。但是,从声明中可以很好地看出它是一个String数组,对吗?


问题答案:

这将满足您的需求:

public Sonnet29() {
    poem = new String[] { "foo", "bar", "baz" };
}

仅在创建阵列的新实例时才允许使用初始化列表。



 类似资料:
  • 我试图用Kotlin编写如下Java代码: 此代码编译并正确工作:生成一个和给出一个的实例。 以下是我在科特林的成就: 它可以工作,但在Java中,我可以在枚举构造函数中使用构造函数引用。当我尝试在科特林做同样的事情时,也就是 我发现以下编译错误: 类型不匹配:推断的类型为KFunction0,但应为供应商 没有显式类型的lambda也不起作用: 给予 类型不匹配:推断类型是()- 问题是:静态编

  • 我从一个API调用中获得一个日期值为1598331600000 我正在尝试使用SimpleDateFormat将其转换为可读格式

  • 我有一个带有两个64位整数成员的结构X,以及一个构造函数:

  • 问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。

  • 我有一个自定义的参数解析器,它在Spring 3.0.7中工作,但在Spring 3.1.2中失败。下面显示堆栈跟踪和测试驱动程序代码。 当我查看堆栈跟踪时,似乎没有调用。相反,我在堆栈跟踪中看到。 建议? 最后...这里是Spring配置中的注释驱动标记

  • 我在创建对象和参数化构造函数时遇到以下错误。 Main.java: 6:错误:构造函数Cipher类中的Cipher不能应用于给定类型 必需:无参数 找到:int 原因:实际参数列表和正式参数列表的长度不同 这是我的文件的样子