Я использую JCR API, который использует перегрузку методов следующим образом:
setProperty(String value)
setProperty(Boolean value)
setProperty(Integer value)
...
У меня тогда есть Collection<Object>
, который может содержать String
, Boolean
, Integer
и т. Д..
Я хотел бы перебрать эту коллекцию, передав каждый элемент правильной реализации setProperty
для этого типа экземпляра.Очевидный путь - что-то вроде этого:
for (Object value : values) {
if (value instanceof String) node.setProperty((String) value);
if (value instanceof Boolean) node.setProperty((Boolean) value);
if (value instanceof Integer) node.setProperty((Integer) value);
...
}
Теперь, помимо того, что уродлив - и отклоняется от идеалов ОО - это решение просто не масштабируется.Хотя он работает для этого конкретного случая, он быстро станет громоздким по мере роста числа типов.
Я действительно чувствую, что должен быть какой-то элегантный прием или утилита для автоматического выполнения этой операции приведения.