Java-枚举通配符
我在实现Java功能时遇到一些问题。
我有一个“ 0”清单。我有不同的种类,它们都扩展了基类
Sensor
。
我在基类中有一些抽象函数,并且我希望这些函数将Enum作为参数。问题在于,每个子类的Enum都是唯一的,因此,我无法在基类中声明Enum。
下面的代码将“ 2”作为参数。我知道这不是合法的语法,但我只想说明一下,这就是我想将子类Enum作为参数的地方。
private Vector<Sensor> sensors;
public abstract class Sensor {
public Sensor() {}
public abstract int getParam(Enum param);
public abstract void setParam(Enum param, int value);
}
public class TempSensor extends Sensor {
// Parameter names
public static enum TEMP_PARAMETERS{ PARAM_ALARM_HI, PARAM_ALARM_LO }
public TempSensor() {}
@Override
public int getParam(TEMP_PARAMETERS param) {
// Will do some stuff here
return 0;
}
@Override
public void setParam(TEMP_PARAMETERS param, int value) {
// Will do some stuff here
}
}
如果不同的Enums实现一个接口,则可以在抽象方法中将该接口用作参数类型,但是然后我可以将不属于相应类的Enums作为参数传递。有办法避免这种情况吗?
没有找到相关结果
已邀请:
3 个回复
蜂佬渺
桔适丛
的标记接口,只需让您不同的枚举实现该接口即可。然后将ѭ6用作接受枚举的方法的形式参数的类型。但是,您需要确保获得的枚举实现了
,而不仅仅是其他实现
的类:
这样可以确保形式参数是
,并实现
。该方法将不接受作为参数的另一个类,该类也实现
。 因此,您的课程最终看起来像这样:
殿虫
您的设计可能存在更大的问题。修复这些问题可能会消除对get和set的需求。