属性拼接转换成字符串
有一天,您遇到一些代码,并认为这很漂亮,为什么我没有想到呢? 因此,我的长期同事Mark Warner在使用方法引用处理从String进行转换的标准名称/值存储模式方面有一个不错的选择。
int size = store.getProperty("cache.limit", 500, Integer::parseInt);boolean enabled = store.getProperty("cache.enabled", true, Boolean::getBoolean);
我以他的示例为例,对其进行了稍微的重构,以返回Optional,然后得到以下结果:
public Optional<String> getProperty(String propertyName) {return Optional.ofNullable(map.get(propertyName));
}public <T> Optional<T> getProperty(String propertyName, ThrowingFunction<String,? extends T,? extends Exception> func ) {return getProperty(propertyName).map(val -> {try {return func.apply( val );} catch ( Exception e ) {LOGGER.severe( () -> "Invalid property transform, will default " + e.getMessage() );return null;}});
}
这意味着默认值最终由Optional提供,这是OAOO的一个很好的应用程序。
int size = store.getProperty("cache.limit", Integer::parseInt).orElse(500);boolean enabled = store.getProperty("cache.enabled", Boolean::getBoolean).orElse(true);
我认为这更整洁。 但这确实取决于您对使用Optionals的感受。
翻译自: https://www.javacodegeeks.com/2016/04/converting-string-configuration-properties-types-bit-optional.html
属性拼接转换成字符串