gpt4 book ai didi

java - 从内部实例化一个类的多个实例

转载 作者:行者123 更新时间:2023-11-30 01:46:43 25 4
gpt4 key购买 nike

有人可以解释一下下面的代码如何在没有任何异常的情况下工作吗?我在想,当为周日创建新实例时,它也会为周一(周日内)创建一个新实例,然后再次为周日(周一内)创建一个新实例,依此类推......类似于递归,因为它们都是 Week 类的一部分。但我的理解是错误的,因为下面的代码工作正常。

public class Week {
public static final Week SUNDAY = new Week("SUNDAY",0);
public static final Week MONDAY = new Week("MONDAY",1);

private String name;
private int val;

private Week(String name, int val) {
this.name = name;
this.val = val;
}

public int getIndex() {
return this.val;
}

@Override
public String toString() {
return this.name;
}
}

当我阅读有关 java 枚举的内容时,我产生了这个疑问。

最佳答案

SUNDAYMONDAY 是实例变量(非静态)时,您将看到上述行为。

由于您已将它们声明为静态,因此这些属性是类的属性,并在 Week 类相继加载时进行初始化。一个对象创建 SUNDAY 中不会包含 MONDAY,反之亦然。

正如我在开头提到的,下面的代码将无法成功运行,因为它将尝试无休止地递归创建实例。

public class Week {

public final Week SUNDAY = new Week("SUNDAY",0);
public final Week MONDAY = new Week("MONDAY",1);

private String name;
private int val;

private Week(String name, int val) {
this.name = name;
this.val = val;
}

public int getIndex() {
return this.val;
}

@Override
public String toString() {
return this.name;
}

public static void main(String[] args) {
new Week("TUESDAY", 2);
}
}

关于java - 从内部实例化一个类的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57681013/

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