簡體   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