小编Cak*_*ray的帖子

处理在交换机/案例中实现特定接口的不同枚举中的枚举值

我有一个空的界面Units,我用来标记不同的enums所以我知道他们拥有不同的单位(例如我有一个enum TemperatureUnits implements Units{}存储华氏温度,摄氏温度等,然后我有一个DistanceUnits持有米,脚等.

我想根据enum传递给方法的值在switch/case中做不同的事情.我希望它接受来自任何enum实现的值Units.问题是,由于enums实际上是不同的类,我必须在switch/case中使用值的限定名称.我的代码看起来像这样:

     public static void foo(Units units){ //units has to be an enum that implements Units

        switch (units){
            case TemperatureUnits.FAHRENHEIT: //I can't say just FAHRENHEIT, because Units itself doesn't 
                //have a FAHRENHEIT value, but it won't let me say TemperatureUnits.FAHRENHEIT because it won't let use
                // qualified enum values as cases.
                //Do stuff
                break;
            case DistanceUnits.METERS:
                //Do other stuff
                break;
            //...etc …
Run Code Online (Sandbox Code Playgroud)

java enums switch-statement

5
推荐指数
1
解决办法
188
查看次数

标签 统计

enums ×1

java ×1

switch-statement ×1