1 Map相关
摘自 Spring中加载 META-INF/spring.factories 下的类名,Map的巧初始化:
Map<String, List<String>> result = cache.get(classLoader); // 缓存中有就直接返回 if (result != null) { return result; } // 初始化Map result = new HashMap<>(); // value是个集合,初始化value并放数据 result.computeIfAbsent(factoryTypeName, key -> new ArrayList<>()).add(factoryImplementationName.trim()); // 对value去重并转换为可读集合 result.replaceAll((factoryType, implementations) -> implementations.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)));
2 字符串相关
摘自 Spring中加载 META-INF/spring.factories 下的类名,逗号分隔:
// 逗号分隔出来每个全类名 String[] factoryImplementationNames = StringUtils.commaDelimitedListToStringArray((String) entry.getValue());