找到枚举大小的更好方法是什么?

时间:2011-08-09 12:12:22

标签: java oop enums

  

可能重复:
  Enum values().length vs private field

我想知道以下哪种方法可以更好地找到枚举的大小。

这样 - >

public enum Company {
        AUDI(4), BMW(5), CADILLAC(11), FORD(44), JAGUAR(45);
        private final int id;
        public final int length= Company.values().length;

        private Company(int id) {
            this.id = id;
        }
    }

OR

public enum Company {
        AUDI(4), BMW(5), CADILLAC(11), FORD(44), JAGUAR(45);
        private final int id;
        public final int length= 5;
        private Company(int id) {
            this.id = id;
        }
    }

5 个答案:

答案 0 :(得分:5)

给出 -

enum Widgets {TINY, SMALL, AVERAGE, BIG};

小部件的大小是:

Widgets.values().length

答案 1 :(得分:2)

两种方式。只需在需要的地方使用myEnum.values()。size。

答案 2 :(得分:2)

在我看来,第一种方式更好。这样,如果在枚举中添加更多公司,则不必手动更新长度变量。

答案 3 :(得分:2)

第一个,但是将其设为static,这样就不会制作数组的多个副本。

    public final static int length= Company.values().length;

答案 4 :(得分:2)

第二种方法的问题是,每次添加新值时,都必须手动更新长度。

对于第一种方法,它是动态的,您甚至可以将其设置为静态(因为如果不这样做,每个枚举实例将采用一个整数):

public final static int length= Company.values().length;

但我建议使用'Company.values()。length',因为它更标准。