枚举属性和副作用

2024-04-10

我有一个关于枚举的问题(这可能是一个简单的问题,但是......)。 这是我的程序:

public class Hello { 
         public enum MyEnum 
         { 
               ONE(1), TWO(2); 
               private int value; 
               private MyEnum(int value) 
               { 
                    System.out.println("hello");  
                    this.value = value; 
               } 
               public int getValue() 
               { 
                    return value; 
               } 
        } 
        public static void main(String[] args)  
        { 
              MyEnum e = MyEnum.ONE; 
        } 
}

我的问题是:为什么输出是

hello
hello

and not

hello ?

代码如何“进入”构造函数两次? 第一次是什么时候,第二次是什么时候? 为什么枚举构造函数不能是公共的? 这是否是它打印两次而不是只打印一次的原因?


枚举是单例,它们在类加载时实例化 - 因此两个“hello”来自实例化MyEnum.ONE and MyEnum.TWO(只需尝试打印value以及)。

这也是构造函数不能公开的原因:枚举保证每个值只有一个实例 - 如果其他人可以摆弄构造函数,则不能这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举属性和副作用 的相关文章

随机推荐