卖产品怎么做网站用什么软件制作网站

web/2025/9/30 18:16:19/文章来源:
卖产品怎么做网站,用什么软件制作网站,网站建设网站软件,厂里拿货开小加工厂对于Java程序员来说#xff0c;null是令人头痛的东西。时常会受到空指针异常#xff08;NPE#xff09;的骚扰。连Java的发明者都承认这是他的一项巨大失误。那么#xff0c;有什么办法可以避免在代码中写大量的判空语句呢#xff1f;有人说可以使用 JDK8提供的 Optional … 对于Java程序员来说null是令人头痛的东西。时常会受到空指针异常NPE的骚扰。连Java的发明者都承认这是他的一项巨大失误。那么有什么办法可以避免在代码中写大量的判空语句呢有人说可以使用 JDK8提供的 Optional 来避免判空但是用起来还是有些麻烦。作者在日常工作中封装了一个工具可以可以链式调用对象成员而无需判空相比原有的if null逻辑 和 JDK8提供的 Optional 更加优雅易用在工程实践中大大提高了编码效率也让代码更加的精准和优雅。不优雅的判空调用我想从事Java开发的小伙伴肯定有遇到过下面这种让人难受的判空逻辑现在有一个User类School 是它的成员变量/*** author Axin* since 2020-09-20* summary 一个User类定义* PsData 是lombok组件提供的注解简化了get set等等的约定代码*/Datapublic class User {private String name;private String gender;private School school;Datapublic static class School {private String scName;private String adress;}} 现在想要获得School的成员变量 adress , 一般的处理方式public static void main(String[] args) {User axin  new User();User.School school  new User.School();axin.setName(hello);if (Objects.nonNull(axin)  Objects.nonNull(axin.getSchool())) {User.School userSc  axin.getSchool();System.out.println(userSc.getAdress());}} 获取adress时要对School进行判空虽然有些麻烦到也能用通过 JDK8 提供的 Optional 工具也是可以但还是有些麻烦。而下文的 OptionalBean 提供一种可以链式不断地调用成员变量而无需判空的方法直接链式调用到你想要获取的目标变量而无需担心空指针的问题。链式调用成员变量如果用了本文设计的工具 OptionalBean 那么上述的调用可以简化成这样public static void main(String[] args) {User axin  new User();User.School school  new User.School();axin.setName(hello);// 1. 基本调用String value1  OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).get();System.out.println(value1);} 执行结果其中User的school变量为空可以看到代码并没有空指针而是返回了null。这个工具怎么实现的呢OptionalBean 工具/*** author Axin* since 2020-09-10* summary 链式调用 bean 中 value 的方法*/public final class OptionalBeanT{private static final OptionalBean? EMPTY  new OptionalBean();private final T value;private OptionalBean() {this.value  null;}/*** 空值会抛出空指针* param value*/private OptionalBean(T value) {this.value  Objects.requireNonNull(value);}/*** 包装一个不能为空的 bean* param value* param T* return*/public static T OptionalBeanT of(T value) {return new OptionalBean(value);}/*** 包装一个可能为空的 bean* param value* param T* return*/public static T OptionalBeanT ofNullable(T value) {return value  null ? empty() : of(value);}/*** 取出具体的值* param fn* param R* return*/public T get() {return Objects.isNull(value) ? null : value;}/*** 取出一个可能为空的对象* param fn* param R* return*/public R OptionalBeanR getBean(Function? super T, ? extends R fn) {return Objects.isNull(value) ? OptionalBean.empty() : OptionalBean.ofNullable(fn.apply(value));}/*** 如果目标值为空 获取一个默认值* param other* return*/public T orElse(T other) {return value ! null ? value : other;}/*** 如果目标值为空 通过lambda表达式获取一个值* param other* return*/public T orElseGet(Supplier? extends T other) {return value ! null ? value : other.get();}/*** 如果目标值为空 抛出一个异常* param exceptionSupplier* param X* return* throws X*/public X extends Throwable T orElseThrow(Supplier? extends X exceptionSupplier) throws X {if (value ! null) {return value;} else {throw exceptionSupplier.get();}}public boolean isPresent() {return value ! null;}public void ifPresent(Consumer? super T consumer) {if (value ! null)consumer.accept(value);}Overridepublic int hashCode() {return Objects.hashCode(value);}/*** 空值常量* param T* return*/public staticT OptionalBeanT empty() {SuppressWarnings(unchecked)OptionalBeanT none  (OptionalBeanT) EMPTY;return none;}} 工具设计主要参考了 Optional 的实现再加上对链式调用的扩展就是上述的OptionalBean。getBean 其实是当变量为空时返回了一个 包装空值的 OptionalBean 对象同时泛型的使用让工具更加易用。使用手册可以看到代码中也提供了和 Optional 一样的扩展方法如 ifPresent()、orElse()等等public static void main(String[] args) {User axin  new User();User.School school  new User.School();axin.setName(hello);// 1. 基本调用String value1  OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).get();System.out.println(value1);// 2. 扩展的 isPresent方法 用法与 Optional 一样boolean present  OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).isPresent();System.out.println(present);// 3. 扩展的 ifPresent 方法OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).ifPresent(adress - System.out.println(String.format(地址存在:%s, adress)));// 4. 扩展的 orElseString value2  OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).orElse(家里蹲);System.out.println(value2);// 5. 扩展的 orElseThrowtry {String value3  OptionalBean.ofNullable(axin).getBean(User::getSchool).getBean(User.School::getAdress).orElseThrow(() - new RuntimeException(空指针了));} catch (Exception e) {System.out.println(e.getMessage());}} run一下总结设计了一种可以链式调用对象成员而无需判空的工具让代码更加的精准和优雅如果本文设计的工具满足了刚好解决你的困扰那就在项目中使用吧如果您有更的设计或者文中有错误还请留言一起讨论互相进步 往期推荐这8种常见的SQL错误用法你还在用吗 千万不要这样写代码9种常见的OOM场景演示 用好MySQL的21个好习惯 关注我每天陪你进步一点点

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

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

相关文章

考试类网站如何做中国质量建设协会网站

如果您是一位 C/C 开发人员,那么您一定知道在编写和维护大型项目时所面临的挑战。这些项目通常包含大量的源代码、库和依赖项,需要耗费大量的时间和精力才能构建和维护。在这种情况下,使用自动化工具可以大大减轻您的负担,提高项目…

网站开发的英文书有什么如何开一个自己的网站

文章目录题目描述思路 & 代码更新版题目描述 原地操作 & 减少操作次数:不能直接只拷非零数,也不要每次都一个个推动整个数组 思路 & 代码 维护一个noZeroNums,代表当前循环遇到的非0数的数量第一趟先不管0的数量,…

金融课程网站模板下载厦门网站到首页排名

zoo是时间序列的基础库,是面向通用的设计。 xts 是对时间序列库(zoo) 的一种扩展实现。xts 类型继承了zoo 类型,丰富了时间序列数据处理的函数。 一、xts对象的结构和定义 1、xts对象是一个具有时间索引的观测值矩阵,结构如下: xts matrix …

青岛seo网站建设公司工商管理网站

Kali环境下安装python3 参考: 由于kali环境下是自动安装了python 2.7,没有python3以上的版本,现在开始安装python 1. 先下载python3的tar包 进入这个目录: cd /usr/local/ 创建一个新文件夹python3: mkdir /usr/loc…

杭州网站建设网站制作网店推广1+x证书

对于任意整数 x,x & (x−1),该运算将 x 的二进制表示的最后一个 1变成 0

淘客网站怎么做返利网站正在建设中9797

Davinci Configurator拓展之手动添加Can接收与发送报文 一、COM模块1.添加Rx signal2.添加Tx signal3.添加COM IPDU - Rx4.添加COM IPDU - Tx二、PDUR模块1.添加PduRRoutingPath_MyRx2.添加PduRRoutingPath_MyTx三、查看配置参数总结完善拓展的能力建设,在Configurator里面手动…

中国空间站建造历程网页设计与网站建设指标点

目录 前言 Tessy 如何进行打桩操作 普通桩 高级桩 手写桩 Tessy单元测试之指针相关测试注意事项 有类型的指针(非函数指针): 有类型的函数指针: void 类型的指针: 结语 前言 进行单元测试之后,但凡…

网站改版设计流程西安易扬众和网站建设

一个简单的文本编辑器 features: 1.open 一个文件夹作为项目 2.save 保存当前窗口的内容 3.退出 4.双击文件可以打开文件内容 5.简单的python高亮 6.双击相同文件,会找到之前打开过的文件 打开一个文件夹 打开项目,双击打开文件 保存 代码&#xf…

石景山网站建设有哪些公司网络程序

今天,我们将看到一些使用JSF的Ajax简单样本。 如果要查看有关JSF / Web应用程序的其他文章,请单击以下链接: 重定向后的JSF持久化对象和消息 , 使用JAAS和JSF进行用户登录验证 , JSF:Converter and Bean Au…

专业的魔站建站系统黑帽seo寄生虫

Hot Chocolate 是 .NET 平台下的一个开源组件库, 您可以使用它创建 GraphQL 服务, 它消除了构建成熟的 GraphQL 服务的复杂性, Hot Chocolate 可以连接任何服务或数据源,并创建一个有凝聚力的服务,为您的消费者提供统一的 API。在本文中, 我会在 .NET 应…

网站建设性能指标企业管理培训课程名称

作为程序员,我们每天都在与代码和工具打交道。其中,Shell是一个非常重要的工具,它可以帮助我们高效地完成各种任务。本文将列举一些程序员日常使用Shell提高效率的操作,帮助大家更好地利用Shell提高工作效率。 首先,让…

网站建设被骗维护费怎么做制作网站的教程

0. My Conclusion CoWs on PASTURE: 擅长零样本的视觉语言对象导航,主要解决了LLM辅助下的任务级动作执行任务VoxPoser: 擅长设计一些未预定义的动作轨迹,主要解决了LLM辅助下的动作轨迹设计任务Relational Pose Diffusion&#…

上海单位网站建设网络推广方式有哪些推广思路

文章目录 1.事务四大特性2.事务并发问题3.事务隔离级别4.隔离级别查看与设置5.自动提交事务5.1 查看是否自动提交事务5.2 关闭或开启自动提交事务 6.事务执行的基本流程7.设置事务的保存点参考文献 说到事务控制,先说一下数据库的事务是什么以及 MySQL 中我们必知的…

59网站一起做网店普宁中国建设网官方网站下载e路最新版

在使用iPhone系统邮箱的时候,我们在配置的时候可能会遇到各种各样的问题,导致无法在系统邮件里面使用163邮箱。主要是手机客户端的密码和网页登陆的密码是不一样的。常见问题下面就是有人在使用的时候遇到的问题:登陆密码错误有人知道怎么在i…

好的空间网站内蒙古网站设计

前言 在嵌入式系统中,串口通讯一直扮演着至关重要的角色。STM32微控制器系列内置了���个串口(USART)模块,能够支持多种串口通讯协议,如UART、SPI和I2C等。本文将深入探讨STM32串口通…

电子商务网站建设期末photoshop手机版在线使用

一.数据类型 MySQL中有多种数据类型,每种类型用于存储不同类型的数据。以下是MySQL中常见的数据类型: 数值类型: INT:整数类型,存储范围为-2,147,483,648到2,147,483,647。BIGINT:大整数类型,存…

青岛模板化网站建设谷歌搜索广告优化

命令模式可以将请求的对象和执行请求的对象解耦(实际上是通过命令对象进行沟通,即解耦)。(个人感觉,这章讲的很一般) 按个人理解来讲: 假如需要一个遥控器,遥控器有一个插口可以插上…

湛江免费企业建站建设执业注册中心网站

num_length.Focus(); UpDownBase updbText (UpDownBase)num_length; num_length.Select(0, updbText.Text.Length);转载于:https://www.cnblogs.com/LuoEast/p/7942476.html

网站托管就业服务器两个域名一个ip做两个网站

0.目录结构$ tree mysqlmysql├── files│ └── web.sql├── handlers│ └── main.yml├── tasks│ └── main.yml├── templates│ ├── client.cnf.j2│ ├── my.cnf.j2│ ├── mysql-clients.cnf.j2│ └── server.cnf.j2└── vars1…

网站被百度惩罚放弃网站建设考察试卷

引言:为什么选择 DeepSeek-R1? 近期,国产大模型 DeepSeek-R1 因其低成本、高性能的特点在全球 AI 领域引发热议。根据 Sensor Tower 数据,其发布仅 18 天便斩获 1600 万次下载量,远超 ChatGPT 同期表现。而腾讯云推出…