gpt4 book ai didi

java - 什么时候创建实例成员?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:02 27 4
gpt4 key购买 nike

我有 2 段来自 Java 的代码:

class Test1 {
index = 1;
int index;
}

对比

class Test2 {
{ index = 1; }
int index;
}

第一个编译失败,我猜是因为在定义之前使用了成员"index"?第二个是没有错误的。我不明白为什么。你们能抽出几分钟来帮助我吗?非常感谢!

最佳答案

第二个编译,因为第二个代码中存在的 { ... } 内部结构是所谓的 initializer block . Java 编译器将此 block 复制到每个构造函数中。

并且,与任何其他类方法一样,它可以使用该类中定义的属性;在此 block 之上或之前定义此属性的确切位置无关紧要。

第一个不编译,因为它根本不适合 language specification对于类主体和成员声明,​​它基本上定义了七种允许的东西:

  1. InstanceInitializer(此处使用的结构)
  2. StaticInitializer(类似于first,但在类加载时执行)
  3. 构造函数声明
  4. 字段声明
  5. 方法声明
  6. 类声明
  7. 接口(interface)声明

关于java - 什么时候创建实例成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com