作为一种原始的版本Optional
*,爪哇1.8提供OptionalInt
,OptionalLong
和OptionalDouble
。
但是我找不到等效的OptionalBoolean
类。
有什么技术上的理由反对OptionalBoolean
吗?
Optional
可以或可以不具有一个值的情况下,使用作为替代null
。该引用解释了使用原始流背后的注意事项。我假设同样适用于原始Optionals。简而言之,出于性能原因,创建了原始流(可能还包括Optionals)。他们没有为所有8种原始类型创建它们,以减少代码重复和接口污染。
在lambda邮件列表中引用Brian Goetz的话:
更笼统地说:拥有专门的原始流(例如IntStream)背后的哲学充满了令人讨厌的折衷。一方面,这有很多丑陋的代码重复,接口污染等。另一方面,盒装操作上的任何一种算法都糟透了,没有减少整数的故事会很糟糕。因此,我们处在艰难的境地,我们正在努力不使其变得更糟。
不使情况变得更糟的第一招是:我们没有做所有八种原始类型。我们正在做int,long和double;所有其他的都可以用这些来模拟。可以说我们也可以摆脱int,但是我们认为大多数Java开发人员都不准备为此做好准备。是的,将会有针对性格的呼吁,而答案是“将其粘贴在一个整数中”。(每个专业化项目预计将占用JRE约100K的空间。)
技巧2:我们正在使用原始流来公开在原始域中最好完成的事情(排序,归约),而不是尝试复制盒装域中可以做的所有事情。例如,正如Aleksey指出的那样,没有IntStream.into()。(如果有,下一个问题将是“
IntCollection在哪里?IntArrayList?IntConcurrentSkipListMap?”。)意图是许多流可能以引用流开始,最终以原始流结束,但是反之则不然。减少了所需的转换次数(例如,对于int->
T,没有映射重载;对于int-> T,没有函数的特殊化,等等)
我要提到的是,我在这个问题的答案中找到了这句话。
我查看了jfxrt.jar的设置,它有Javadoc位置:http://docs.oracle.com/javase/8/docs/api/,源附件在JDK中是“javafx-src.zip”。我在javafx-src.zip中签入源文件,javafx/scene/media中唯一的文件是4个不推荐使用的构建器类。这就解释了为什么这4个类都有可用的Javadocs,但我的问题是:为什么包中的其余类
我刚刚安装了Ubuntu15.10和他们的openjdk-8-jdk(通过apt-get)。 但/etc/ssl/certs/java/cacerts中没有:
我有一个非常简单的HTML表单页面(它是src/main/resources/public/web.HTML中Spring Boot web应用程序的一部分),用于将一个字符串从文本区发布到Spring Boot web应用程序版本1.5.2。 和SpringBoot类来处理POST请求:
我想以秒为单位获取差异,以确定系统时区是在远程时区的前面还是后面。这里的远程时区值是从数据库中获取的“格林尼治标准时间”。它可能是“美国/东方”,我将其转换为“美国/New_York”。但是对于格林尼治标准时间,我得到了错误。 但它给出了以下错误, 如何解决此错误?用什么代替GMT??
我有来自API的json形式的对象列表。这些对象有一些属性,问题是一些对象缺少属性。那么如何无错误地解析其他属性的数据呢? 例如,我有这个缺少的属性 但这所有属性都存在: