繁体   English   中英

将Java 1.8转换为1.6

[英]Convert java 1.8 to 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();

让我们快速看一下:

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是。 人们应该避免积极地进行开发,尤其是当人们不得不依靠他人来进行实际的反向移植工作时。

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

流几乎总是可以转换为循环。 您可以创建一个for循环,循环访问条目集中的每个条目,检查其是否符合filter条件。 如果是这样,请立即中断循环

Entry<String, String> result = null;
for (Entry<String, String> entry : cfg.getTypeMapping().entrySet()) {
    if (entry.getKey().startsWith(jsonType + "|")) {
        result = entry;
        break;
    }
}

请注意,代替Optional ,我使用null来表示“未找到”值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM