吉林网站建设电话,龙华网站建设专业定制企业,口碑好的企业网站开发,保健品的营销及推广方案有一天#xff0c;您遇到一些代码#xff0c;并认为这很漂亮#xff0c;为什么我没有想到呢#xff1f; 因此#xff0c;我的长期同事Mark Warner在使用方法引用处理从String进行转换的标准名称/值存储模式方面有一个不错的选择。 int size store.getProperty(cac… 有一天您遇到一些代码并认为这很漂亮为什么我没有想到呢 因此我的长期同事Mark Warner在使用方法引用处理从String进行转换的标准名称/值存储模式方面有一个不错的选择。 int size store.getProperty(cache.limit, 500, Integer::parseInt);boolean enabled store.getProperty(cache.enabled, true, Boolean::getBoolean); 我以他的示例为例对其进行了稍微的重构以返回Optional然后得到以下结果 public OptionalString getProperty(String propertyName) {return Optional.ofNullable(map.get(propertyName));
}public T OptionalT getProperty(String propertyName, ThrowingFunctionString,? 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