java吧 关注:1,216,686贴子:12,667,089
  • 25回复贴,共1

java17 动态增加枚举项怎么实现

只看楼主收藏回复

百度的方法用java17不行,gpt不会java17,难搞哦


IP属地:四川来自Android客户端1楼2023-10-13 14:05回复
    来大佬


    IP属地:四川来自Android客户端2楼2023-10-13 14:10
    回复


      IP属地:四川来自Android客户端3楼2023-10-13 14:18
      回复
        大佬呢


        IP属地:四川来自Android客户端4楼2023-10-13 14:38
        回复


          IP属地:四川来自Android客户端5楼2023-10-13 14:53
          回复
            大佬快来


            IP属地:四川来自Android客户端6楼2023-10-13 15:25
            回复
              快来大佬


              IP属地:四川来自Android客户端7楼2023-10-13 16:01
              回复
                嘤嘤嘤,大佬快到碗里来


                IP属地:四川来自Android客户端8楼2023-10-13 16:58
                回复
                  诺大的贴吧等不来一位大佬嘛


                  IP属地:四川来自Android客户端9楼2023-10-13 18:09
                  收起回复


                    IP属地:四川来自Android客户端10楼2023-10-14 15:09
                    回复


                      IP属地:四川来自Android客户端11楼2023-10-16 10:03
                      回复
                        来大佬,贴吧有偿解决问题的大佬快到碗里来


                        IP属地:四川来自Android客户端12楼2023-10-16 14:24
                        回复
                          啊?你这啥需求啊?


                          IP属地:安徽来自Android客户端13楼2023-10-16 14:30
                          收起回复
                            等下,java17什么时候这么动态了?enum都能动态增加? 在我理解的语义里,enum是个简化的语法糖来着,一般是比较静态/固定死的语义。老版本的枚举的原理,大概是在javac编译出的字节码里做出static final的enum对应类的object,然后作为类的static field并且投入同是static的values数组,就很静态很简化。。。这种层面要动态增加虽然有可能,但是感觉会和设计上有点不太一致?感觉这个功能很怪,你确定支持这个功能的话,我得查下文档了。。。
                            另外,你的需求或许有其他解法?一般这种场景是直接建立一个map,用key-value的形式来简单地管理,value可以是你自定义的某个类的对象。高级的应用里,甚至可以通过方法的重写,来实现根据不同对象执行不同的代码,会很方便。 而这种情形实质上和enum没很大差别,只是自己在维护更灵活。


                            IP属地:广东14楼2023-10-16 20:31
                            回复
                              下图是我从Java的官方文档里找到的Enum相关的定义。我用红色的框圈出来了最关键的部分,大意是说,一个enum class除了在自己的enum常量里定义的实例以外,无法拥有其他任何实例,显式的实例化会编译报错。java还通过多种机制保证了这一点。
                              综合所有信息,我想你也能理解,如果你指的是enum,那么这个需求除非你在字节码程度上编译新的同名类进行替换,否则是无法实现的(当然我也非常不建议这么做,侵入性太大,并且一旦遇到并发问题很多)。如果你只是需要使用有枚举语义的类而非执著于enum,那么可以用我上一个回复里的方式来。

                              资料来源:The Java® Language Specification Java SE 17 Edition
                              https://docs.oracle.com/javase/specs/jls/se17/html/jls-8.html#jls-8.9


                              IP属地:广东15楼2023-10-16 20:45
                              收起回复