我使用了使用方法重载像这样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);
...
}
现在,而且是丑 - 从OO理想偏离 - 这种解决方案根本没有规模。虽然它适用于这种特殊情况,但随着类型数量的增加,它很快会变得很难处理。
我真的觉得好像自动执行这个铸造操作必须有一些优雅的技巧或util。