首页 > 解决方案 > 将 java 1.8 转换为 1.6

问题描述

如何将其转换为 java 1.6?方法 .stream() 在 java 1.6 中无法使用。

final Optional<Entry<String, String>> mapping = cfg.getTypeMapping()
                .entrySet()
                .stream()
                .filter(e -> e.getKey().startsWith(jsonType + "|"))
                .findFirst();

标签: javajsonjava-streamjava-6

解决方案


让我们快速浏览一下:

mapping = cfg.getTypeMapping()
            .entrySet()
            .stream()
            .filter(e -> e.getKey().startsWith(jsonType + "|"))
            .findFirst();

上面的代码可能会获取某种映射,获取它的条目,然后迭代它们,以停止在startsWith(jsonType + "|").

仅此而已,并且可以很容易地用老式循环代码重写。

但这里的实际挑战是::final Optional<Entry<String, String>>Optional是在 Java 1.8 中添加到 Java 中的。

没有等价物。所以你的整个代码根本无法为 Java 1.6 重写

您可以做的最接近的事情:编写该循环代码,如果循环找到某些内容,则返回该结果,否则返回 null。或者,您可以这样做:

List<Entry<String, String>> firstMapping = Collections.emptyList(); 
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
  if (entry.getKey().startsWith(jsonType + "|")) {
    firstMapping = Collections.singletonList(entry);
    break;
  }
} 
return firstMapping;

或者,鉴于 OP 考虑使用com.google.common.base.Optional,您可以这样做:

for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
  if (entry.getKey().startsWith(jsonType + "|")) {
    return Optional.of(entry);
  }
} 
return Optional.absent();

反而。

当然,永远记住:Java 6 是。人们应该避免对其进行积极的开发,尤其是当必须依赖其他人来完成实际的反向移植工作时。

(免责声明:我的代码示例旨在作为详细的伪代码灵感,我没有通过编译器运行它,它可能包含拼写错误等)


推荐阅读