我有一个空的界面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)