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

最近有人建议从JDK 12中删除Java预览功能Raw String Literals ( JEP 326 ), 现在正式宣布将删除预览功能 ( Java SE 12 [JSR 386] 25版将其删除 )。 JDK String类中已经添加了几种方法来支持此功能。 即使在删除原始字符串文字预览功能之后,在JDK 12之前的JDK版本中添加的那些方法(例如String :: lines )仍可能保持可用。 但是,已经决定应该将JDK 12中添加到String一种方法( String::align ) 从JDK 12中删除,作为删除原始字符串文字的一部分。 方法String :: transform已添加到JDK 12中 ,本文的其余部分详细介绍了String::transform (目前在JDK 12中实现),并讨论了为什么其已引起争议的简短历史暗示它可能是潜在的候选者与原始字符串文字一起删除。

Build 22Build 24 [ 2018年12月15日 ]是本文撰写时的最新可用版本)以来,当前的String::transform实现已在JDK 12 Early Access Build中提供,并通过JDK-8203442引入(“ String :: transform” )。

关于将这种方法添加到JDK的讨论很多。 以下项目符号概述了关键的讨论要点。

  • 吉姆·拉斯基(Jim Laskey)写道 , String::transform的“起源目标”是“为那些不满意String::align()开发人员提供自定义对齐方法”
      • 自从String::transform上的帖子以来, 已将 String::align 添加到JDK 12中, 然后从中删除 。
  • 其他消息进一步描述了String::transform的动机,意图和好处:
      • RémiForax写道 :“……能够从左到右流利地编写代码真是太好了……”
      • 吉姆·拉斯基(Jim Laskey)写道 :“ String :: transform旨在以最通用的字符串形式促进对原始字符串文字的自定义操作(对齐)。”
      • JDK-8203442的“描述”指出,“ String :: transform实例方法允许将lambda函数应用到字符串。”
      • JDK-8203703提供了一些示例,以说明与静态方法相比,使用String :: transform可以“……更清楚地辨别步骤”,在静态方法中,“阅读器被迫从内而外地解释表达式的各个部分”。
  • String::transform最初返回String ,但是后来被更改为返回Object , 吉姆·拉斯基(Jim Laskey)撰写了有关该更改的文章 ,“当其他类型的类型也可能相关时,'transform'变成通用的。” 他总结说:“我可能会回到仅仅支持String 。”
  • 提出以下一些名称(按字母顺序列出)时, String::transform的命名一直具有挑战性 :
      • “ 申请 ”
      • “ applyMutation ”(由AWS开发工具包使用 ,但并非所有人都喜欢 )
      • “ asInputTo “
      • “ 连锁 ”
      • “ 地图 ”( 暂时命名为,但存在一些顾虑 )
      • “ 过程 ”
      • “ 与 ”
  • RémiForax写道 :“ [需要更多的变体( transformToInttransformToLongtransformToDouble )才有用。”
  • Brian Goetz描述了为什么当前计划是通过String::transform方法而不是诸如|>类的运算符来实现此功能的。
  • 斯图尔特·马克斯(Stuart Marks)写道 :“这个特殊的决定[ String::transform ]为在其他类上执行类似操作的方法使用名称'transform'开创了先例”,并引用了JDK-8140283和JDK-8214753 :
      • JDK-8140283提议为Stream和Optional添加“ chain ”方法,以便在使用对StreamOptional起作用并返回某些内容的方法时,“缓解”管线级线性流的“破坏”。本身是“可链接的”)。
      • JDK-8214753建议添加“ Optional::transform ”,以允许“对Optional进行任意操作”。
  • 关于将String::transform添加到OpenJDK 12的方式,存在一些困惑和惊ster,但是Stuart Marks的消息总结了导致添加此方法的事件。
      • Marks的消息状态中有一个特别有趣的句子(我已经强调了一点 ):“尽管这个API点独立存在的 ,但这确实是Jim的RSL工作的一部分,其中包括对String的一些API附加功能,这可能会产生重大影响关于如何在Java代码中使用String文字。”
  • Tomasz Linkowski指出 , String::transform (以及添加到Stream任何类似方法)很可能会在某些情况下使用,而在某些情况下,无需新方法便可以更轻松地完成相同的事情。 他提供的可能滥用String::transform的示例是“ string.transform(String::toLowerCase) ”和“ stream.chain(s->s.map(mapper)) ”。

两个在线示例演示了String::transform如何在最常见的用例中使用:

  • JDK-8203703 (“ String :: transform”)提供了一个“解决方案”示例,该示例演示了String::transform如何通过允许从左到右(而不是从左到右)读取作用在String的操作来提高代码的可读性。阅读“从内而外”。
  • 甲芯库-dev邮件列表上的消息提供了使用的一个例子String::transform到一个转换String成比其他的类的实例String

Stephen Colebourne提出了同样的问题,我想知道当我从JDK 12中删除原始字符串文字时:“考虑到原始字符串的删除及其有争议的性质, String::transform将被删除?” 尽管我没有看到关于String::transform是否将保留在JDK 12中的任何权威性和权威性,但有三点证据使我认为它会继续存在。

  1. 我还没有看到任何说要删除String::transform ,该信息从Early Access Build 22开始已经存在于JDK 12中。 写了一些问题来删除与原始字符串文字相关的编译器支持 ,甚至删除另一个String方法 ( String::align ),但是我不知道为String::transform写的类似问题。
  2. 有人说,虽然String::transform是作为原始字符串文字工作的一部分添加的,但也有人说String::transform “独立的”。
  3. 我之前引用的有关如何使用此方法的两个示例不依赖或不需要原始字符串文字。 换句话说,无论是否存在原始字符串文字,都可以使用该方法。

String::transform已经存在了很短的时间( 不到一年 ),但是已经有很长的历史了。 该方法当前在JDK 12中可用(自Early Access Build 22起),我怀疑尽管从JDK 12中删除了原始字符串文字,但它仍将是String的API的一部分。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤教育】电大中专常见病药物治疗 (2)_1作业 题库

1.作为退热药,阿司匹林的劣势是()。 A.口服吸收迅速而完全 B.婴幼儿发热用阿苯片 C.儿童用药可引起Reye综合征,尤其是病毒性感染引起的发热 D.作用于下丘脑体温调节中枢 E.解热镇痛作用较强 错误 正确答案:左边查询 学…

计算机二级考前急救之Word(上)

一、文件选项卡 (思维导图来源:小黑老师) 1、另存为PDF格式:(另存为快捷键:F12) 2、去掉兼容模式:文件-信息-转换 3、删除不可见的内容:文件-信息-检查文档&#xff08…

【渝粤教育】电大中专建筑材料作业 题库

1.颗粒材料的密度为ρ,表观密度为ρ0,堆积密度为ρ0′,则存在下列关系 ( )。 A.ρ0′>ρ>ρ0 B.ρ> ρ0′>ρ0 C.ρ0 >ρ>ρ0′ D.ρ>…

【渝粤教育】电大中专沟通技巧作业 题库

1可以通过( )的方法来对抗讲话时的紧张感。 A心理暗示 B自我鼓励 C运用合适的肢体语言 D以上方法均可 错误 正确答案:左边查询 学生答案:A 2以下说法正确的是( ) A沟通要有明确的目标 B沟通不需要形成协议 …

常用快捷键

1、常用快捷键 快捷键作用快捷键作用CtrlShift切换输入法AltF4快速关闭程序Ctrl空格中英文输入法切换CtrlS保存Ctrl。切换中英文标点CtrlA全选WindowsE快速打开计算机CtrlZ撤销WindowsD快速回到桌面CtrlC复制WindowsL快速锁定电脑CtrlX剪切F1帮助键CtrlV粘贴F2重命名CtrlF查找…

参数化测试 junit_使用JUnitParams进行参数化的JUnit测试

参数化测试 junit参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试,我们可以建立一种测试方法,该方法从某个数据源中检索数据。 该数据源可以是测试数据对象,外部文件甚至数据库的集合。 一般的想法是使使用相同的单元…

【渝粤教育】电大中专混凝土结构作业 题库

1.下列测试方法中不是混凝土内部空洞和缺陷的检测方法的是() A.钻孔法 B.盲孔法 C.对测法 D.斜测法 正确 正确答案:左边查询 学生答案:B 2.选择测量仪器时,最大被测值一般不宜大于选用仪器最大量程的() A.70% B.80% C.90% D. 100% 正确 正确答…

计算机二级office学习之Excel操作题考点整理

考点1 页面设置 页面布局-页边距、纸张方向、纸张大小、打印区域、页面背景、打印标题、页眉页脚、缩印 页面布局-选中打印区域-打印标题-顶端标题行-选中第二行 考点2 获取外部数据和删除重复值 1、获取外部数据 1.1 自网页 右击文件-打开方式为IE浏览器(360可…

【渝粤教育】电大中专职业应用写作_1作业 题库

1.每个大学生最应该具备的写作能力是() A.诗歌创作 B.小说创作 C.应用文写作 D.散文创作 错误 正确答案:左边查询 学生答案:A 2.下面说法正确的是() A.应用文可以发挥依据和凭证的作用 B.应用文不能规范人们…

Jsoup V的幕后秘密:优化的技巧和窍门

我们做对了,现在是时候更快地做事了。 我们会牢记Donald Knuth的警告:“大约97%的时间,我们应该忘记效率低下:过早的优化是万恶之源”。 根据Jonathan Hedley的介绍,他使用YourKit Java Profiler来测量内存…

【渝粤教育】广东开放大学 会议运行管理 形成性考核 (38)

选择题 题目: 会议的含义是 选择一项: 答案:看左侧 题目: 报告、发言、讲话、辩论等口头交流的方式是与会人员传递信息、交流思想、表达意志和阐明立场的主要手段。这是指的会议的什么性质 选择一项: 答案&#xff1…

计算机二级选择题复习整理(公共基础部分)

主要列个人不太熟悉或较为重要的点,不求全。 一、计算机基础 1、计算机最早应用领域是数值计算 2、冯诺依曼型体系计算机引进概念:二进制、存储程序 3、CAD:设计;CAM:制造;CAI:教育&#xff1…

【渝粤教育】广东开放大学 动画概论 形成性考核 (44)

选择题 题目:“动画”这个词最早是哪国人提出的 答案:看左侧 题目:被誉为“动画的鼻祖”的是 答案:看左侧 题目:被公认为世界上第一部动画影片的是 答案:看左侧 题目:动画片是电影的一种特殊类…

【渝粤教育】广东开放大学 嵌入式数据库 形成性考核 (48)

选择题 题目:SQL语句中的条件用以下哪一项来表达( ) 题目:“Create Unique Index AAA On 学生表(学号)”将在学生表上创建名为I_xsb的( )。 题目:( &#xff…

移动通信学习笔记03_蜂窝原理

教学大纲:组网技术 基本内容:典型的多址接入技术;话务量与呼损率的计算;蜂窝的概念、频率复用原则和区群的概念;信道的分配策略和分配原则;蜂窝系统的基本网络结构和各部分的功能;切换和漫游&am…

【渝粤教育】广东开放大学 影视艺术概论 形成性考核 (52)

选择题 题目: 电影被称为 。 选择一项: 答案:看左侧 题目: 《淘金记》是 的作品。 选择一项: 答案:看左侧 题目: 《母与法》是由 拍摄的。 选择一项: 答案&#xf…

java rmi 使用管道_使用Java RMI时要记住的两件事

java rmi 使用管道这是一篇简短的博客文章,介绍使用Java RMI时应注意的两个常见陷阱。 设置java.rmi.server.hostname 如果您感到陌生,Connection拒绝托管: RMI客户端上的错误消息,并且您确定连接应该正常工作(您仔细…

【渝粤教育】广东开放大学 文化产业项目案例分析 形成性考核 (51)

选择题 题目:《武林外传》发生在虚拟的唐代。 答案:看左侧 题目:《武林外传》中李大嘴是一个厨师。 答案:看左侧 题目:《疯狂动物城》是一部动画片。 答案:看左侧 题目:影片的整体框架是“小镇少…

01_2_数字基带传输及其频谱特性

一、数字基带信号的表示 g(t)g(t)g(t)是一个基本的脉冲,有不同形状;ana_nan​从信源出来的信息码序列,只有电平特性。 二、功率谱密度的推导过程 ① 广义平稳随机信号的自相关函数和功率谱密度之间互为傅立叶变换关系 ② 计算基带信号的自相…

【渝粤教育】广东开放大学 标准化理论与方法 形成性考核 (53)

选择题 题目: 根据《标准化法》规定,企业生产的产品没有国家标准、行业标准和地方标准的,应当制定相应的企业标准作为( )。 答案:看左侧 题目: 现阶段常用的标准的载体包括( )。 答案:看左侧 题目&#x…