枚举属性和副作用

 PHP_sunshine 发布于 2023-02-13 12:06

我有一个关于枚举的问题(它可能是一个简单的但......).这是我的计划:

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

并不是

hello

代码如何"两次"到构造函数?第一次是什么时候,第二次是什么时候?为什么枚举构造函数不能公开?这是它打印两次而不是一次打印的原因吗?

2 个回答
  • 代码如何"两次"到构造函数?

    为枚举的每个元素调用Conctructor.很少改变你的示例来演示它:

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

    输出:

    hello 1
    hello 2
    

    2023-02-13 12:08 回答
  • 枚举是单身人士和他们在班级的加载实例化-这样的两个"你好"来自instanciatingš MyEnum.ONEMyEnum.TWO(只是尝试打印value为好).

    这也是构造函数不能公开的原因:Enum保证每个值只有一个实例 - 如果其他人可以使用构造函数则不能.

    2023-02-13 12:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有