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

从[duplicate]中实例化一个类的多个实例

薄哲
2023-03-14

有人能解释一下下面的代码是如何毫无例外地工作的吗。我在想,当为星期天创建新实例时,它也会为星期一(星期天内)创建一个新实例,然后再为星期天(星期一内)创建一个新实例,以此类推。。。类似递归的东西,因为它们都是课程周的一部分。但我的理解是错误的,因为下面的代码运行良好。

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枚举。

共有2个答案

孟增
2023-03-14

SUNDAYMONDAY静态变量。这意味着它们是类变量。类Week对象将不具有名为SUNDAYMONDAY

你可以在这里获得更多关于static的信息:“static”关键字在类中起什么作用?

水昊阳
2023-03-14

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);
    }
}
 类似资料:
  • 问题内容: 我知道这个问题听起来很模糊,因此我将通过一个示例来使其更加清楚: 这就是我要做的。你会怎么做?我当然可以这样使用eval(): 但是我宁愿远离eval()。没有eval(),有没有办法做到这一点? 问题答案: 首先将类名放入变量中: 这通常是您将以Factory模式包装的东西。

  • 问题内容: 我有一个正在运行的项目,并且所有xml文件都向我显示错误消息。该程序仍然有效。 我清理了缓存,并使用了无效的缓存和重新启动。 这里是完整的消息: 以下类无法实例化android.support.v7.widget.AppCompatTextView 提示:在IDE中显示时,在自定义视图中使用View.isInEditMode()可以跳过代码或显示示例数据。 问题答案: 在, 改变从主题

  • 我目前正在开发一个Android用户界面,并遇到了以下问题。 基于注释我假设这是Gradle的问题。我也无法解决以下问题。 下面是gradle文件 下面是文件 注意:如果有关系,我使用的是Android Studio 3.1.4 此外,一些参考资料表明,问题可能在中,因此可以在下面找到文件。 参考资料: 以下类无法实例化:-android.support.v7.widget.工具栏 找不到以下类:

  • 问题内容: 我的代码中需要一个单例。我用Java实现了它,并且效果很好。我这样做的原因是为了确保在多种环境中只有一个此类的实例。 但是现在我想用单元测试在本地测试我的Singleton对象。因此,我需要模拟此Singleton的另一个实例(该对象可能来自另一个设备)。那么是否有可能第二次实例化Singleton以进行测试,还是我必须对其进行模拟? 我不确定,但是我认为可以通过使用其他类加载器来实现

  • 问题内容: 我有一串 现在我想创建一个类的对象,其中的类名是 类名 这是一样的东西 我想知道怎么做… 问题答案: “使用”将回答您的所有问题。首先使用来获取对象,然后: 如果要实例化使用检索的类,则必须首先要求它提供一个代表我想要的构造函数的对象,然后要求该对象创建一个新对象。该方法在将检索; 然后,我可以通过调用其方法来使用它: 有一种方法似乎可以满足您的要求。 不要使用它 。它将静默地将检查的