java吧 关注:1,271,964贴子:12,779,837
  • 7回复贴,共1

有没有人知道java的枚举怎么改ordinal的起始值?

只看楼主收藏回复

enum EType
{
Type1,
Type2,
Type3,
Type4
}
我想从Type2 开始,值为200.
Type1 = 0
Type2 = 200
Type3 = 201
........
这种怎么实现?


IP属地:江苏1楼2021-05-10 11:39回复
    没人会?


    IP属地:江苏2楼2021-05-10 14:04
    回复
      2025-07-31 21:16:17
      广告
      不感兴趣
      开通SVIP免广告
      没有提供也不建议改这玩意儿,硬要改要上反射。但你都要反射了,干嘛不加个value呢?


      IP属地:浙江3楼2021-05-10 14:25
      回复
        public enum EType {
        Type1,
        Type2,
        Type3,
        Type4;
        EType(){
        try{
        Field field = getClass().getSuperclass().getDeclaredField("ordinal");
        field.setAccessible(true);
        if(!this.name().equals("Type1")){
        field.set(this, this.ordinal() + 199);
        }
        field.setAccessible(false);
        } catch (NoSuchFieldException | IllegalAccessException e) {
        e.printStackTrace();
        }
        }
        @Override
        public String toString() {
        return String.valueOf(ordinal());
        }
        public static void main(String[] args) {
        Arrays.stream(values()).forEach(System.out::println);
        }
        }


        IP属地:浙江4楼2021-05-10 14:51
        收起回复
          一个类型一个值,不要喷我


          IP属地:江苏来自Android客户端5楼2021-05-10 15:40
          收起回复