Если все значения на карте являются Worker
объектами, вы должны объявить, что ваша карта имеет тип Map<String, Worker>
. Таким образом, когда вы извлекаете значение из карты, оно будет напечатано как Worker
. Таким образом, вы можете вызывать любой метод, объявленный в Worker
, а не проверять тип во время выполнения, используя instanceof
.
Если карта содержит разные значения, и вам необходимо сохранить тип значения как Object
, может быть целесообразно использовать интерфейс для определения метода, который вы хотите вызывать для каждого отдельного типа объекта.
Если вы не знаете, какой метод вы хотите использовать для значений до времени выполнения, и карта может содержать разные значения, вам просто нужно будет сделать то, что вы в настоящее время делаете, и использовать Map<String, Object>
.
Наконец, чтобы получить значения карты, вы делаете то же, что упоминал Крис Джестер-Янг до меня. Самым большим преимуществом, как я уже говорил ранее, является то, что ваши объекты будут напечатаны, и вам не нужно будет проверять приведение / instanceof.