最新网站建设的模板怎么查看网站是用什么系统做的

web/2025/10/5 22:55:02/文章来源:
最新网站建设的模板,怎么查看网站是用什么系统做的,中国建设科技集团股份有限公司,做视频网站代码java方法可选参数在Java类中设计方法时#xff0c;某些参数对于其执行而言可能是可选的。 无论是在DTO#xff0c;胖模型域对象还是简单的无状态服务类中#xff0c;可选方法参数都是常见的。 从本文中#xff0c; 您将学习如何在Java中处理可选参数 。 我们将专注于常规方… java方法可选参数 在Java类中设计方法时某些参数对于其执行而言可能是可选的。 无论是在DTO胖模型域对象还是简单的无状态服务类中可选方法参数都是常见的。 从本文中 您将学习如何在Java中处理可选参数 。 我们将专注于常规方法具有可选字段的类构造函数并快速查看所讨论主题的不良做法。 我们将停下来看看Java 8 Optional并评估它是否符合我们的需求。 让我们开始吧。 1.可选方法参数 您可以通过几种不同的方法来处理Java可选参数。 我将引导您从最简单到更复杂。 Nullable注解 为什么不传递零值呢 这是一个简单的解决方案不需要任何额外的工作。 您没有任何需要作为方法参数之一的对象吗 没问题。 只需传递null即可编译器很高兴。 这里的问题是可读性。 调用方法的程序员如何知道他是否可以安全地传递null 对于哪些参数可以接受空值哪些是必需的 为了清楚说明null是有效输入可以使用Nullable批注。 User createUser(String name, Nullable Email email) {// ... } 您不同意此方法声明是不言自明的吗 尽管简单但是null传递方法的问题在于它很容易失控。 团队可能会Swift开始过度使用它并使代码库难以维护并带有大量的空检查条件 。 不过还有其他选择。 可选清单 代替null我们有时可以创建类的空表示。 考虑一下Java集合。 如果方法接受列表或映射则永远不要使用null作为输入。 空集合总是比空集合好因为在大多数情况下不需要任何特殊处理。 您可能想知道为什么要浪费内存来创建空集合。 毕竟null不会花费您任何费用。 您的怀疑是有道理的。 幸运的是有一个简单的解决方案。 每当需要空的代表时就不应创建集合的新实例。 在代码库中重复使用同一实例。 你知道吗 Java已经具有您可以使用的所有集合的空实例。 您可以在Collections实用程序类中找到它们 。 User createUser(String name, ListRights rights) {// ... }import java.util.Collections; // ... create(bob, Collections.emptyList());空对象模式 空集合的概念也适用于其他类。 空集合只是具有零元素的常规集合。 同样您可以考虑应用程序中的其他对象。 Null对象是表示缺失值的类的特殊实例。 如果某些方法希望将对象作为参数则始终可以传递Null对象表示形式而不必担心它将在运行时引起意外的异常。 您可以通过两种方式实现Null对象模式。 对于简单值对象将预定义值分配给属性的默认实例就足够了。 通常您将此Null对象公开为常量以便可以多次重用。 例如 public class User {public static final User EMPTY new User(, Collections.emptyList());private final String name;private final ListRights rights;public User(String name, ListRights rights) {Objects.requireNonNull(name);Objects.requireNonNull(rights);this.name name;this.rights rights;}// ...} 如果您的Null对象还需要模仿通过方法公开的某些行为则简单实例可能无法工作。 在这种情况下您应该扩展类并覆盖此类方法。 这是扩展前一个示例的示例 public class AnonymousUser extends User {public static final AnonymousUser INSTANCE new AnonymousUser();private AnonymousUser() {super(, Collections.emptyList());}Overridepublic void changeName(String newName) {throw new AuthenticationException(Only authenticated user can change the name);}} 专用的Null对象类使您可以将多个角落案例放在一个地方这使维护更加轻松。 方法重载 如果您设计的方法带有可选参数则可以公开该方法的重载版本。 每种方法应仅接受必需的参数。 使用这种方法您不必期望调用方将为可选参数提供默认值。 您可以通过自己的内部重载方法传递默认值。 换句话说您对方法的调用者隐藏了可选参数的默认值。 User createUser(String name) {this.createUser(name, Email.EMPTY); }User createUser(String name, Email email) {Objects.requireNonNull(name);Objects.requireNonNull(rights);// ... } 重载的方法可以互相调用但这不是强制性的。 如果更方便则可以独立实现每种方法。 但是通常您会验证所有参数并将逻辑放在参数列表最长的方法中。 值得一提的是方法重载已在标准Java库中广泛使用。 当您学习如何设计API时请向经验丰富的人学习。 参数对象模式 大多数开发人员都同意当方法参数列表过长时将变得难以阅读。 通常您可以使用Parameter Object pattern处理问题。 参数对象是一个命名的容器类它对所有方法参数进行分组。 是否解决了可选方法参数的问题 不不是。 它只是将问题移至参数对象的构造函数。 让我们看看如何用…解决这个更普遍的问题。 2.可选的构造函数参数 从带有可选参数的问题的角度来看简单的构造函数与常规成员方法没有什么不同。 您可以成功使用我们已经在构造函数中讨论过的所有技术。 但是当构造函数参数列表越来越长并且其中许多是可选参数时应用构造函数重载似乎很麻烦。 如果您同意则应签出Builder模式。 建造者模式 让我们考虑一个具有多个可选字段的类 class ProgrammerProfile {// required fieldprivate final String name;// optional fieldsprivate final String blogUrl;private final String twitterHandler;private final String githubUrl;public ProgrammerProfile(String name) {Objects.requireNonNull(name);this.name name;// other fields assignment...}// getters} 如果创建了一个构造函数来覆盖所有可能的带有可选参数的组合那么最终将得到不胜枚举的清单。 如何避免多个构造函数 使用构建器类。 您通常将构建器实现为它应该构建的类的内部类。 这样两个类都可以访问其私有成员。 看一下前面示例中的类的构建器 class ProgrammerProfile {// fields, getters, ...private ProgrammerProfile(Builder builder) {Objects.requireNonNull(builder.name);name builder.name;blogUrl builder.blogUrl;twitterHandler builder.twitterHandler;githubUrl builder.githubUrl;}public static Builder newBuilder() {return new Builder();}static final class Builder {private String name;private String blogUrl;private String twitterHandler;private String githubUrl;private Builder() {}public Builder withName(String val) {name val;return this;}public Builder withBlogUrl(String val) {blogUrl val;return this;}public Builder withTwitterHandler(String val) {twitterHandler val;return this;}public Builder withGithubUrl(String val) {githubUrl val;return this;}public ProgrammerProfile build() {return new ProgrammerProfile(this);}}} 代替公共构造函数我们只为内部构建器类公开一个静态工厂方法。 专用构造函数构建器在build方法中调用使用构建器实例来分配所有字段并验证是否存在所有必需的值。 一想起来这是一种非常简单的技术。 仅设置选定的可选参数的该构建器的客户机代码可能如下所示 ProgrammerProfile.newBuilder().withName(Daniel).withBlogUrl(www.dolszewski.com/blog/).build(); 使用构建器您可以使用对象的可选参数创建所有可能的组合。 编译时安全的类生成器 不幸的是仅通过查看上一段落中构建器的方法您就无法真正分辨出哪些参数是可选的哪些是必需的。 而且在不知不觉中您可能会偶然忽略所需的参数。 查看以下错误使用的构建器示例 ProgrammerProfile.newBuilder().withBlogUrl(www.dolszewski.com/blog/).withTwitterHandler(daolszewski).build(); 编译器不会报告任何错误。 您将仅在运行时意识到缺少必需参数的问题。 那么您如何解决这个问题 您需要稍微修改构建器工厂方法以便仅可以使用必需参数来调用它而仅对可选参数使用左构建器方法。 这就是您需要更改的所有内容 class ProgrammerProfile {// ...public static Builder newBuilder(String name) {return new Builder(name);}public static final class Builder {private final String name;// ...private Builder(String name) {this.name name;}// ...} }生成器类的生成 您可能会认为构建器需要大量代码。 不用担心 您不必自己键入所有代码。 所有流行的Java IDE都具有允许生成类生成器的插件。 IntelliJ用户可以检查InnerBuilder插件 而Eclipse爱好者可以看看Spart Builder Generator 。 您也可以在官方存储库中找到替代插件。 如果您使用项目Lombok 它还可以简化与类构建器的合作。 如果需要开始的地方可以查看有关Lombok建筑商的简短介绍 。 3. Java可选参数反模式 在浏览网络以寻找使用Java可选参数的方法时除了我们已经介绍的内容之外您还可以找到一些其他建议。 让我解释一下为什么您应该将它们视为错误的方法。 地图 从技术上讲方法的输入是一组键值对。 在Java中我们有一个符合此描述的标准内置数据结构-Map。 编译不会阻止您将HashMap StringObject用作所有可选方法参数的容器但是您的常识应该如此。 尽管您可以在HashMap中放入任何内容但这是错误的想法。 这种方法难以理解难以理解并将Swift成为您维护的噩梦。 还是不服气 您绝对应该考虑将您的职业转到JavaScript开发人员。 在公司哭泣要容易得多。 Java变量 需要明确的是使用Java varargs绝对没有错。 如果您不知道您的方法将被调用多少个参数那么varargs非常适合。 但是将varargs用作单个值的容器可能存在或不存在是一种滥用。 这样的声明允许使用比预期更多的可选值来调用方法。 我们讨论了用于处理单个可选参数的更具描述性的方法。 为什么不将Optional作为方法参数 最后最有争议的方法-Java 8 Optional作为方法输入。 我已经写了一篇关于可选用例的文章 其中还介绍了方法参数。 让我扩展您在那里可以找到的内容。 内存使用情况 创建Optional类的实例时必须为其分配内存。 尽管使用Optional.empty访问的空可选实例是可重用的单例就像我们已经讨论过的空集合一样但非空实例将占用操作内存。 如果将此方法与其他方法进行比较仅出于调用将立即解开对象的方法的目的而使用Optional工厂方法包装对象就没有意义。 但是如今垃圾收集器可以很好地处理短寿命的物品。 内存分配没什么大不了的。 我们还有其他缺点吗 铭记读者 代码的可读性如何 createProfile(Daniel, Optional.of(www.dolszewski.com/blog/),Optional.of(daolszewski), Optional.of(https://github.com/danielolszewski)); 也许这只是个人喜好问题但对于许多开发人员而言多个Optional工厂调用会分散您的注意力。 阅读器代码中的噪音。 但同样这只是一个口味问题。 让我们找到更令人信服的东西。 Java语言设计师的意见 Oracle公司Java语言架构师Brian Goetz 曾表示 将Optional添加到标准库中时要考虑方法的结果而不是方法的输入。 但是软件开发人员是叛逆者不喜欢听当局的话。 这种说法似乎也很微弱。 我们必须更深入。 Optional是否解决了可选参数问题 如果您有这样的方法声明 doSomethingWith(OptionalObject parameter); 您应该期望多少输入 该参数可以是包装值或空的可选实例。 答案是2对吗 错误。 真正的答案是3因为您还可以将null用作参数。 当您不知道谁将成为您的API的调用者时您应该对输入具有有限的信任。 在这种情况下在处理参数之前应检查Optional是否不等于null然后检查该值是否存在。 非常复杂您不同意吗 我敢肯定我还没有穷尽这个话题。 由于这是Java编程的潜在圣战之一因此您应该形成自己的见解。 如果要向Optional的参数列表中添加某些内容作为方法参数请在注释中分享您的想法。 非常受欢迎。 结论 让我们回顾一下我们学到的东西。 Java无法为方法参数设置默认值。 该语言为我们提供了许多其他可选参数来处理可选参数。 这些替代方法包括Nullable批注空对象方法重载和参数对象模式。 我们还熟悉具有多个可选字段的对象的类构建器。 最后我们回顾了常见的不良做法和潜在的滥用行为。 如果您觉得这篇文章有帮助请与您的关注者分享。 我也很想知道您的想法欢迎提出所有意见。 翻译自: https://www.javacodegeeks.com/2018/11/java-optional-parameters.htmljava方法可选参数

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

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

相关文章

网站后台素材街道门户网站的建设思路

​ 我的博客是一个技术分享平台,涵盖了机器学习、数据可视化、大数据分析、数学统计学、推荐算法、Linux命令及环境搭建,以及Kafka、Flask、FastAPI、Docker等组件的使用教程。 在这个信息时代,数据已经成为了一种新的资源,而机…

最容易被收录的网站网页设计图片居中怎么设置

一、介绍 工厂模式可以分为 3 个小类 简单工厂模式工厂方法模式抽象工厂模式 工厂模式的工厂类,并不一定以 Factory 结尾,例如 DataFormat、Calender 他们都是工厂类,通过静态方法来创建实例。 除此之外,创建对象的方法名称一…

学院网站建设的特色南宁网络推广方法

这里写自定义目录标题 1 Lua1.1 简介1.1.1 注释1.1.2 变量1.1.3 数据类型1.1.4 控制结构1.1.5 函数1.1.6 模块1.1.7 字符串操作1.1.8 错误处理1.1.9 标准库 1.2 Redis和Lua脚本结合优点1.3 Lua脚本应用和调试1.3.1 缓存更新1.3.2 原子操作1.3.3 数据处理1.3.4 分布式锁1.3.5 Re…

天元建设集团有限公司经济官司seo排名方案

标题描述一、解决方法解决代码二、关于高度问题简单讲一下jquery中的 height(),innerHeight()、outHeight(),js中的offsetHeight、clientHeight、scrollHeight。如何获取没有给出高度的元素的高度?详细介绍offsetHeight,clientHeight,scrollH…

怎样在文章后做网站链接网站seo的内容是什么

TextField对象相关的属性和方法,内容十分丰富,下面几个表格: 表一 TextField 对象的方法 方法 说明 TextField.addListener 加入接收触发事件如文本域内容变化或滚动变化的监听对象,触发事件可以参看最后一个表。 TextField.getDe…

网站源码cms深圳品牌展会

想要更快更高效地做事,一定会带来问题,我们要做的是 保证事情一定要做对坚定不移地解决问题,寻找方法,而不是回归慢速 这里有几个典型的例子 从单周期CPU,到多周期CPU,是为了提速,我们不必再…

微信开发商成都网站seo外包

目录 1. 问题现象 2. 原因分析 3. 解决方法 1. 问题现象 因为业务需求,需要利用子线程向主线程发送数据。像这种子线程和主线程进行数据交互时,一般都是通过Qt的信号槽机制来实现。如下代码: void myClass::doBusiness() {…

如何跳过网站会员沈阳市住房和城乡建设厅网站

曾经在我的一篇《控制面板的创建》中介绍过WinCE控制面板的结构,不过由于那篇文章其目的只在于控制面板如何调用EXE程序,故对控制面板也仅是泛泛而谈.不过在这篇文章中,我们将对WinCE的使用方法来个整体的详解. 1.控制面板的结构 控制面板其实也是个动态链接库…

手机端视频网站模板什么是网络营销中的终极诉求

1、演示 2、水印的目的 版权保护:水印可以在图片、文档或视频中嵌入作者、品牌或版权所有者的信息,以防止未经授权的复制、传播或使用。当其他人使用带有水印的内容时,可以追溯到原始作者或版权所有者,从而加强版权保护。 身份识…

asp网站加速网站增加外链的方法有哪些

SD3303A是一款大功率高亮度LED驱动芯片,可以提供 1A的电流驱动3W的LED。具有高效率,低功耗等特点 ,适用于电池供电的LED照明设备。 SD3303A具有开路保护和过温保护。 SD3303A需要使用两颗10uF(或者更大)的瓷 片电容,来保证电路性能…

3g 手机网站电子商务网站建设有哪些知识点

1.关闭在线DRC功能,可以避免布线时候一卡一卡的问题: 取消在线DRC的勾选: 2.AD的在线封装库,非常好用: 如何优雅地服用AD 21的在线元件库 – 吴川斌的博客 (mr-wu.cn) 3.如何恢复Altium Designer23默认窗口布局 打开…

冠县住房和城乡建设局网站淘宝客建站教程

SpringCloud Ribbon中的7种负载均衡策略 Ribbon 介绍负载均衡设置7种负载均衡策略1.轮询策略2.权重策略3.随机策略4.最小连接数策略5.重试策略6.可用性敏感策略7.区域敏感策略 总结 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端…

营销型网站建设策划案wix网站建设

1、typescript的基础类型 如下表: 数据类型 关键字 描述 任意类型 any 生命any的变量可以赋值任意类型的值 数字类型 number 整数或分数 字符串类型 string 使用单引号(‘’)或者双引号(“”)来表示字符串…

百度搜索网站提交网站建设 模块

相信大多数人在学习单片机的时候,都是从最基本的8位MCU开始的。一般来说,8位单片机最常见的是三个系列是:51系列、AVR系列、PIC系列。而前段时间,群里讨论了一个问题:在51单片机上跑RTOS有没有意义?关于这个…

天台县建设局官方网站网站建设免费域名

在现今的数字时代,我们的生活离不开互联网。我们使用在线平台进行银行交易、购物、社交媒体互动和其他各种活动。为了保护个人隐私和账号安全,我们需要寻找一种安全且方便的方式来管理我们的在线账号。MuLogin指纹浏览器正是为了满足这些需求而设计的一款…

学做陶艺作品的网站wordpress批量更新文章

5G时代到来,物联网技术的应用也离我们越来越近。智慧交通、智能家庭、智慧园区,越来越多的融入到我们的生活当中。作为物联网重要技术组成的嵌入式系统,嵌入式系统视角有助于深刻地、全面地理解物联网的本质。而物联网是通用计算机的互联网与…

静态网站源码北京软件app开发公司

引言 MistralAI,一家法国的初创企业,近期在AI界引发了轰动,刚刚发布了全球首个基于MoE(Mixture of Experts,混合专家)技术的大型语言模型——Mistral-8x7B-MoE。这一里程碑事件标志着AI技术的一个重要突破…

乔拓云网站建设新网站秒收录技术

unordered_map与unordered_set的实现 文章目录 unordered_map与unordered_set的实现前言一、问题一HashTable.h 二、问题二&问题三1.封装时如何取出key2.不同类型key如何建立对应关系 三、问题四&问题五问题四问题五 四、实现代码MyUnorderedSet.hMyUnorderedMap.hHash…

浙江耀华建设集团网站企业网站建设制作设计哪家最专业

StarRocks 于 4 月底正式发布了 3.0 版本,该里程碑版本带来了大家期盼已久的新特性--存算分离。此新功能一推出,立即受到社区热情追捧,用户纷纷开始在自己的业务中评估和测试存算分离效果。从芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十…