当前位置: 首页 > news >正文

有哪些公司的网站做的很好看设计公司资质申请

有哪些公司的网站做的很好看,设计公司资质申请,沈阳男科医院排名最好的是哪家,网站建设教程高清视频java实现可选形参类java.util.Optional被实现为单个不可变的具体类#xff0c;该类在内部处理两种情况。 一个有元素#xff0c;一个没有元素。 让Optional作为一个接口并让两个不同的实现代替实现该接口不是更好的选择吗#xff1f; 毕竟#xff0c;这就是我们通常被教导要… java实现可选形参 类java.util.Optional被实现为单个不可变的具体类该类在内部处理两种情况。 一个有元素一个没有元素。 让Optional作为一个接口并让两个不同的实现代替实现该接口不是更好的选择吗 毕竟这就是我们通常被教导要使用的一种面向对象的语言。 在本文中我们将了解当前Optional实现的一些潜在参数。 我们还将学习为什么以不同的方式实现Streams从而使Streams可以从文件甚至数据库表中获取。 真正的可选实现 真正的java.util.Optional::get实现如下所示 public T get() { if (value null ) { throw new NoSuchElementException( No value present ); } return value; } 可以看出有两个代码路径。 一种是值是null没有元素并且不会引发异常另一种是值是其他值返回值。 可选可选实现 让我们假装我们将回到时光机中并被要求再次实现Optional 。 我认为我们中的许多人可能会提出一个初始解决方案就像下面的解决方案我将其命名为假设接口Option以便我们可以将其与“实际”接口进行区分具有两个不同的实现此处为EmptyOption和PresentOption public interface OptionT { T get(); boolean isPresent(); public U OptionU map(Function? super T, ? extends U mapper); static T OptionT empty() { return (OptionT) EmptyOption.EMPTY; } (OptionT) EmptyOption.EMPTY; } T OptionT of(T value) { static T OptionT of(T value) { return new PresentOption(value); } PresentOption(value); } T OptionT ofNullable(T value) { static T OptionT ofNullable(T value) { return value null ? empty() : of(value); ? empty() : of(value); } } final class EmptyOptionT implements OptionT { static final EmptyOption? EMPTY new EmptyOption(); private EmptyOption() {} Override public T get() { throw new NoSuchElementException(); } NoSuchElementException(); } Override public boolean isPresent() { return false ; } ; } Override public U OptionU map(Function? super T, ? extends U mapper) { requireNonNull(mapper); return (OptionU) EMPTY; } } final class PresentOptionT implements OptionT { private final T value; PresentOption(T value) { this .value requireNonNull(value); } .value requireNonNull(value); } Override public T get() { return value; } value; } Override public boolean isPresent() { return true ; } ; } Override public U OptionU map(Function? super T, ? extends U mapper) { requireNonNull(mapper); return Option.ofNullable(mapper.apply(value)); } } 为了简洁起见仅示出了几种方法但是原理保持不变针对存在元素和不存在元素的情况的不同实现。 这给出了更清晰的代码也使任何人都可以实现可选选项。 分析 我有信心在构思Optional时JDK团队已对这种解决方案进行了评估并且我认为不选择该解决方案是明智的决定。 Optional主要目的是“包装”返回值以防止NPE和返回原始空值的其他缺点。 我还认为设计目标是使用Optional对性能的影响应该很小甚至可以忽略不计。 在下文中我推测了一些论点以选择以上所创造的当前的Optional实现。 剖面污染 JIT编译器按需编译Java字节码以提高解释字节码的性能。 为了有效地做到这一点JIT编译器能够收集每种已知方法的统计信息。 每个方法都可以具有一个MethodData对象该对象包含有关如何使用该方法的度量标准并且一旦JVM认为该方法足够“温暖”即在某种意义上已被充分调用便会创建该对象。 创建和维护MethodData过程称为“分析”。 当调用之间使用的方法大不相同时就会发生“配置文件污染”包括但不限于提供交替的非null / null元素并调用不同的多态方法例如参数是类型T泛型并且被调用的方法调用T::equals 。 Java的基本功能是其动态调用方法的能力。 因此当调用Option::get时 EmptyOption::get或 最终调用PresentOption::get取决于调用时存在的实现。 一旦该方法被调用了10,000次JIT编译器就会使用MethodData创建一个有效的已编译代码段根据迄今为止收集的统计信息该代码段将以最佳方式执行。 因此如果元素始终存在使用PresentOption 并且牢记这一点编译代码但随后突然出现EmptyOption 则代码必须“退出”并采用慢得多的代码路径。 仅在最后一个类中使用Optional 就不可能再有Optional方法的任何其他实现因此不会因不同的实现而造成配置文件污染。 JIT可以确定性地并合理地快速编译代码。 但是等等JVM不可能在启动时检查所有类并确定实际上只有两个实现类。 Option 然后它可以解决整个问题 好吧不。 我们可以随时随意添加类因此无法安全地枚举特定接口的所有可能实现。 至少要等到我们有了Java中真正的密封类时才能进行。 原料药污染 如果人们可以自由编写Optional自定义实现那么与内置Optional相比这些实现很可能会遭受设计缺陷/偏差。 同样人们可能会让他们自己的类型实现Optional接口这增加了JIT编译器/分析器的负担因此将诱使人们使用非预期的复合类型例如Foo implements Bar, OptionalBazz) 。 另外 Optional现在是Java不可或缺的一部分因此可以使它与JDK本身一起有效发展包括内联类和其他即将推出的Java新功能。 可选与流 与Optional相反 java.util.stream.Stream和专用版本例如IntStream 确实是接口。 为什么Stream不像Optional那样具体地进行最后的上课 好吧Streams有一套完全不同的要求。 可以从Collection或数组中获取Stream但是有很多更强大的获取Stream 。 可以从文件套接字随机生成器甚至从数据库表中获取Stream 。 如果Stream被密封将无法实现这些功能。 Speedment Stream是一个库的示例该库允许从几乎任何数据库中获取标准Java流。 在此处阅读有关Speedment Stream的更多信息。 结论 Optional密封有充分的理由。 Optional的内部实现不太清楚但这是值得付出的代价它具有更好的性能和更清晰的用户代码。 流是非密封接口任何人都可以实现并且可用于从各种来源包括文件和数据库表获取元素。 Speedment Stream ORM可用于从数据库表获取Streams。 在此处下载Speedment Stream。 翻译自: https://www.javacodegeeks.com/2019/08/java-optional-implementation-optional.htmljava实现可选形参
http://www.pierceye.com/news/276444/

相关文章:

  • php 视频播放网站开发php做直播类型的网站
  • 网站建设氺金手指排名11wordpress手机端菜单
  • 存储网站建设软件界面设计图
  • 微信 公司网站 怎么做WordPress安装在Windows
  • 商丘给企业做网站的公司已备案域名租用
  • .net商城网站模板下载网站开发怎么对接客户
  • php程序员网站开发域名企业备案对网站的好处
  • 沈阳市城乡建设网站wordpress全文
  • 冉冉科技网站建设网络教学平台网址
  • 深圳网站设计建设公司宁波易通建设网站
  • 许昌网站建设公司网站的空间和域名
  • 公司查询网站查询系统wordpress简书主题
  • 公司网站 钓鱼网站ui设计交付物都包含哪些
  • seo网站导航建设技巧精东影视传媒文化管理公司
  • 做白酒的网站怎么查网站建设是哪家公司
  • 网站域名密码免费网站推广产品
  • 网站建设一般要多少费用申请网站官网
  • 金融网站织梦模板二手车网站建设
  • 怎么自己写代码做网站做网站必须用域名吗
  • 重庆营销网站建设平台怎么添加wordpress模板
  • 网站赚取广告费深圳个人外贸网站建
  • 在线销售型的网站巢湖城市建设投资有限公司网站
  • 苏州高端网站建设设计程序源代码网站
  • 基本原理网站建设文档怎么做网站链接
  • 网站建设出售门户网站有哪些推广分类
  • 企业网站制作一般多少钱做ppt的兼职网站有哪些
  • 分公司可以建设网站淘宝联盟怎么推广
  • 苏州网站设计哪家公司好童程童美编程地址在哪里
  • 软文营销的成功案例百度优化怎么做
  • 公司网站开发怎么收费优化方案英语必修三