Почему не работает метод получения объекта?
Столкнулся с о следующей проблемой. Есть несколько дочерних классов, наследуемых от родительского. Они используют общие методы в классе MainActivity. В нем я использую спиннер, в который загружается наименование лекарства (строка).
Сделал метод получения класса, чтобы обращаться к нему из разных методов MainActivity.
public static IbufenForte getIbufenForteClass() {
return new IbufenForte();
}
Далее в методе выбора значения из спиннера, получаю то что мне нужно
syrups.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selected = syrups.getSelectedItem().toString(); //заношу строку из спиннера
intervalBetweenReceptions.setText(getIbufenForteClass().intervalBetweenReceptions()); //тут все что надо
//получаю из соответствующего класса
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Теперь я хочу, чтобы при выборе в спиннере названия лекарсва, брался тот же метод только из соотвествующего класса. Но чтобы не плодить условия иф елсе, сделал такой метод
public Object getSelectedClass() {
selectedClass.put(getIbufenForteClass(), getIbufenForteClass().contentActiveSubstance()); //заполняю хэш мэп
selectedClass.put(getIbufenClass(), getIbufenClass().contentActiveSubstance()); //ключ - объект, значение - поле с
//наименованием
selectedClass.forEach((key, value) -> {
if (value.equals(this.selected)) {
obj = key;
}
});
return obj; // возвращаю ссылку на объект класса выбранного в спиннере наименования
}
Теперь в теории я мог строку
intervalBetweenReceptions.setText(getIbufenForteClass().intervalBetweenReceptions());заменить на
intervalBetweenReceptions.setText(getSelectedClass().intervalBetweenReceptions());
Но увы, getSelectedClass() ничего не знает о методах выбранного класса, хотя объект возвращает.
Как можно задуманное реализовать в данной ситуации другим способом, потому как с моим уровнем знаний я могу лишь наплодить if else