Extending an enum via inheritance

后端 未结 15 2553
温柔的废话
温柔的废话 2020-11-27 17:40

I know this rather goes against the idea of enums, but is it possible to extend enums in C#/Java? I mean \"extend\" in both the sense of adding new values to an enum, but a

15条回答
  •  误落风尘
    2020-11-27 18:24

    If you mean extends in the Base class sense, then in Java... no.

    But you can extend an enum value to have properties and methods if that's what you mean.

    For example, the following uses a Bracket enum:

    class Person {
        enum Bracket {
            Low(0, 12000),
            Middle(12000, 60000),
            Upper(60000, 100000);
    
            private final int low;
            private final int high;
            Brackets(int low, int high) {
                this.low = low;
                this.high = high;
            }
    
            public int getLow() {
                return low;
            }
    
            public int getHigh() {
                return high;
            }
    
            public boolean isWithin(int value) {
               return value >= low && value <= high;
            }
    
            public String toString() {
                return "Bracket " + low + " to " + high;
            }
        }
    
        private Bracket bracket;
        private String name;
    
        public Person(String name, Bracket bracket) {
            this.bracket = bracket;
            this.name = name;
        }
    
        public String toString() {
            return name + " in " + bracket;
        }        
    }
    

提交回复
热议问题