Я кодирую мини-проект рода медицинской информации, и в нем я читаю текст из нескольких источников данных. Все эти текстовые источники имеют одинаковый тип информации, но под несколько разными надписями. Например, sourceA имеет раздел под названием «неблагоприятные эффекты», а sourceB называет его «побочными эффектами».Использование интерфейса с перечислениями
У меня есть интерфейс под названием Reader
и несколько классов (AReader
, BReader
и т. Д.), Реализующих этот интерфейс. Кроме того, у меня есть перечисление для каждого класса для заголовков разделов. Например:
enum ASections {
SIDE_EFFECTS ("side effects"),
DOSAGE ("dosage");
private String sectionTitle;
private ASections(String s) { this.sectionTitle = s; }
}
enum BSections {
SIDE_EFFECTS ("adverse effects"),
DOSAGE ("dosage and usage");
private String sectionTitle;
private BSections(String s) { this.sectionTitle = s; }
}
В основе моего проекта лежит Orchestrator
класса, который использует Reader
(фактический источник A, B, и т.д. указаны с помощью параметров командной строки). Все идет нормально.
Однако я хочу, чтобы все классы реализации Reader
также реализовать метод getSectionText
, где аргумент должен быть ASections или BSections или ...
Как указать такой метод на уровне интерфейса?
Это был мой первый (очевидно, неправильно) попытка:
public String getSectionText(Enum _section_enum);
Идея заключается в том, что независимо от того, какой источник данных указан в командной строке, я должен быть в состоянии получить необходимый тип текста по получение соответствующего заголовка раздела.
Простейшая вещь, вероятно, заключается в том, чтобы ваш _enums_ реализовал интерфейс с помощью метода 'getSectionText', который принимает все необходимые аргументы. –
Я не понимаю, что будет возвращать sectionText, почему вы передаете enum? – nachokk
@nachokk: В моем дизайне класс, реализующий интерфейс 'Reader', имеет карту, которая отображает заголовок раздела в фактический текст в теле секции. Я хочу отвлечься от точного текста названий (потому что они могут различаться в разных источниках, например.«дозировка», «дозировка и использование» и т. д.). Таким образом, эта карта имеет перечисление (например, 'ASections.DOSAGE') в качестве ключа, а текст - как значение. Затем я могу сделать 'Reader # getSectionText', чтобы получить текст. –