日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JDK 12的String :: transform方法的简要但复杂的历史

發(fā)布時(shí)間:2023/12/3 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK 12的String :: transform方法的简要但复杂的历史 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近有人建議從JDK 12中刪除Java預(yù)覽功能Raw String Literals ( JEP 326 ), 現(xiàn)在正式宣布將刪除預(yù)覽功能 ( Java SE 12 [JSR 386] 25版將其刪除 )。 JDK String類中已經(jīng)添加了幾種方法來支持此功能。 即使在刪除原始字符串文字預(yù)覽功能之后,在JDK 12之前的JDK版本中添加的那些方法(例如String :: lines )仍可能保持可用。 但是,已經(jīng)決定應(yīng)該將JDK 12中添加到String一種方法( String::align ) 從JDK 12中刪除,作為刪除原始字符串文字的一部分。 方法String :: transform已添加到JDK 12中 ,本文的其余部分詳細(xì)介紹了String::transform (目前在JDK 12中實(shí)現(xiàn)),并討論了為什么其已引起爭(zhēng)議的簡(jiǎn)短歷史暗示它可能是潛在的候選者與原始字符串文字一起刪除。

自Build 22 ( Build 24 [ 2018年12月15日 ]是本文撰寫時(shí)的最新可用版本)以來,當(dāng)前的String::transform實(shí)現(xiàn)已在JDK 12 Early Access Build中提供,并通過JDK-8203442引入(“ String :: transform” )。

關(guān)于將這種方法添加到JDK的討論很多。 以下項(xiàng)目符號(hào)概述了關(guān)鍵的討論要點(diǎn)。

  • 吉姆·拉斯基(Jim Laskey)寫道 , String::transform的“起源目標(biāo)”是“為那些不滿意String::align()開發(fā)人員提供自定義對(duì)齊方法”
      • 自從String::transform上的帖子以來, 已將 String::align 添加到JDK 12中, 然后從中刪除 。
  • 其他消息進(jìn)一步描述了String::transform的動(dòng)機(jī),意圖和好處:
      • RémiForax寫道 :“……能夠從左到右流利地編寫代碼真是太好了……”
      • 吉姆·拉斯基(Jim Laskey)寫道 :“ String :: transform旨在以最通用的字符串形式促進(jìn)對(duì)原始字符串文字的自定義操作(對(duì)齊)。”
      • JDK-8203442的“描述”指出,“ String :: transform實(shí)例方法允許將lambda函數(shù)應(yīng)用到字符串。”
      • JDK-8203703提供了一些示例,以說明與靜態(tài)方法相比,使用String :: transform可以“……更清楚地辨別步驟”,在靜態(tài)方法中,“閱讀器被迫從內(nèi)而外地解釋表達(dá)式的各個(gè)部分”。
  • String::transform最初返回String ,但是后來被更改為返回Object , 吉姆·拉斯基(Jim Laskey)撰寫了有關(guān)該更改的文章 ,“當(dāng)其他類型的類型也可能相關(guān)時(shí),'transform'變成通用的。” 他總結(jié)說:“我可能會(huì)回到僅僅支持String 。”
  • 提出以下一些名稱(按字母順序列出)時(shí), String::transform的命名一直具有挑戰(zhàn)性 :
      • “ 申請(qǐng) ”
      • “ applyMutation ”(由AWS開發(fā)工具包使用 ,但并非所有人都喜歡 )
      • “ asInputTo “
      • “ 連鎖 ”
      • “ 地圖 ”( 暫時(shí)命名為,但存在一些顧慮 )
      • “ 過程 ”
      • “ 與 ”
  • RémiForax寫道 :“ [需要更多的變體( transformToInt , transformToLong , transformToDouble )才有用。”
  • Brian Goetz描述了為什么當(dāng)前計(jì)劃是通過String::transform方法而不是諸如|>類的運(yùn)算符來實(shí)現(xiàn)此功能的。
  • 斯圖爾特·馬克斯(Stuart Marks)寫道 :“這個(gè)特殊的決定[ String::transform ]為在其他類上執(zhí)行類似操作的方法使用名稱'transform'開創(chuàng)了先例”,并引用了JDK-8140283和JDK-8214753 :
      • JDK-8140283提議為Stream和Optional添加“ chain ”方法,以便在使用對(duì)Stream或Optional起作用并返回某些內(nèi)容的方法時(shí),“緩解”管線級(jí)線性流的“破壞”。本身是“可鏈接的”)。
      • JDK-8214753建議添加“ Optional::transform ”,以允許“對(duì)Optional進(jìn)行任意操作”。
  • 關(guān)于將String::transform添加到OpenJDK 12的方式,存在一些困惑和驚ster,但是Stuart Marks的消息總結(jié)了導(dǎo)致添加此方法的事件。
      • Marks的消息狀態(tài)中有一個(gè)特別有趣的句子(我已經(jīng)強(qiáng)調(diào)了一點(diǎn) ):“盡管這個(gè)API點(diǎn)是獨(dú)立存在的 ,但這確實(shí)是Jim的RSL工作的一部分,其中包括對(duì)String的一些API附加功能,這可能會(huì)產(chǎn)生重大影響關(guān)于如何在Java代碼中使用String文字。”
  • Tomasz Linkowski指出 , String::transform (以及添加到Stream任何類似方法)很可能會(huì)在某些情況下使用,而在某些情況下,無需新方法便可以更輕松地完成相同的事情。 他提供的可能濫用String::transform的示例是“ string.transform(String::toLowerCase) ”和“ stream.chain(s->s.map(mapper)) ”。

兩個(gè)在線示例演示了String::transform如何在最常見的用例中使用:

  • JDK-8203703 (“ String :: transform”)提供了一個(gè)“解決方案”示例,該示例演示了String::transform如何通過允許從左到右(而不是從左到右)讀取作用在String的操作來提高代碼的可讀性。閱讀“從內(nèi)而外”。
  • 甲芯庫(kù)-dev郵件列表上的消息提供了使用的一個(gè)例子String::transform到一個(gè)轉(zhuǎn)換String成比其他的類的實(shí)例String 。

Stephen Colebourne提出了同樣的問題,我想知道當(dāng)我從JDK 12中刪除原始字符串文字時(shí):“考慮到原始字符串的刪除及其有爭(zhēng)議的性質(zhì), String::transform將被刪除?” 盡管我沒有看到關(guān)于String::transform是否將保留在JDK 12中的任何權(quán)威性和權(quán)威性,但有三點(diǎn)證據(jù)使我認(rèn)為它會(huì)繼續(xù)存在。

  • 我還沒有看到任何說要?jiǎng)h除String::transform ,該信息從Early Access Build 22開始已經(jīng)存在于JDK 12中。 寫了一些問題來刪除與原始字符串文字相關(guān)的編譯器支持 ,甚至刪除另一個(gè)String方法 ( String::align ),但是我不知道為String::transform寫的類似問題。
  • 有人說,雖然String::transform是作為原始字符串文字工作的一部分添加的,但也有人說String::transform “獨(dú)立的”。
  • 我之前引用的有關(guān)如何使用此方法的兩個(gè)示例不依賴或不需要原始字符串文字。 換句話說,無論是否存在原始字符串文字,都可以使用該方法。
  • String::transform已經(jīng)存在了很短的時(shí)間( 不到一年 ),但是已經(jīng)有很長(zhǎng)的歷史了。 該方法當(dāng)前在JDK 12中可用(自Early Access Build 22起),我懷疑盡管從JDK 12中刪除了原始字符串文字,但它仍將是String的API的一部分。

    翻譯自: https://www.javacodegeeks.com/2018/12/complicated-history-jdk-12s-string.html

    總結(jié)

    以上是生活随笔為你收集整理的JDK 12的String :: transform方法的简要但复杂的历史的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。