У меня проблемы с реализацией функции Java.
У меня есть список Sensors
.У меня их разные, все они расширяют базовый класс Sensor
.У меня есть некоторые абстрактные функции в базовом классе, и я хочу, чтобы эти функции принимали Enum в качестве параметра.Проблема заключается в том, что Enum уникален для каждого подкласса, и поэтому я не могу объявить Enum в базовом классе.
Код ниже имеет Enum
в качестве параметра.Я знаю, что это недопустимый синтаксис, но я просто хочу проиллюстрировать, что именно здесь я хочу иметь подкласс 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 реализуют интерфейсЯ могу использовать интерфейс в качестве типа параметра в абстрактных методах, но затем я могу передать в качестве параметра перечисления, которые не принадлежат соответствующему классу.Есть ли способ избежать этого?