jdk8 参数为方法_JDK 8中的几乎命名的方法参数

jdk8 参数为方法

有时在Java中命名方法参数确实很不错,这看起来可能已经很长时间了,但是始终还有其他一些解决方法,例如使用构建器模式来获得类似的行为,这将为一点点。 在我看来,使用JDK 8中的Lambda支持可以使您获得非常接近的效果,而无需其他一些方法所需要的模板。

因此,请考虑这个简单的Facade类,该类提供了带有可变参数列表的方法。 请注意,该方法带有一个Consumer对象,这是我们稍后将要使用Lambda调用的方法。

package client;import java.util.function.Consumer;public class Facade {public static void invoke(Consumer<Parameter> op) {Parameter p = new Parameter();op.accept(new Parameter());invoke(p);        }public static void invoke(Parameter p) {// Defensive copy and validatep = p.clone();p.validate();// ...}public static class Parameter implements Cloneable {public String value1, value2, value3;public Parameter validate() {// ...return this;}public Parameter clone() {// We can use vanilla clone here, for more complicated mutable objects// you might need to perform a deeper copytry {return (Parameter) super.clone();} catch (CloneNotSupportedException e) {throw new RuntimeException(e);}}}}

因此,一旦有了这些,就可以使用Lambda表示法调用具有您认为合适的参数数量的invoke方法:

...
{public static void main(String[] args) {// Single parameter versionFacade.invoke(p ->  p.value1="x" );// Multiple parameter versionFacade.invoke(p -> { p.value1="x"; p.value2="y";});}
}

当然,您的鹰眼将意识到,使用早期的JDK,相同的模式,当然减去了Consumer方法。 考虑到那里有大量的Java开发人员,可能已经有人发明了这种模式。 但您永远不知道,如果不写下来,就不会发生。

...
{public static void main(String[] args) {// Using an anonymous inner class pre JDK 8Facade.invoke(new Parameter() {{value1 = "x";value2 = "y";}});}
}

参考: 在我们的JCG合作伙伴 Gerard Davison的博客博客中,JDK 8中几乎命名的方法参数 。

翻译自: https://www.javacodegeeks.com/2013/08/almost-named-method-arguments-in-jdk-8.html

jdk8 参数为方法

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

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

相关文章

Math.random()获取随机数

调用该方法返回一个double值&#xff0c;为正号&#xff0c;大于等于0.0 &#xff0c;小于1.0 。 [0.0&#xff0c;1.0) 返回的值是从该范围&#xff08;大约&#xff09;均匀分布而伪随机选择的。 示例&#xff1a;获取一个[10&#xff0c;99]的随机数 public class JavaTest…

传奇霸业维护服务器,37传奇霸业8月18日部分区服维护计划

亲爱的玩家:您好&#xff0c;为保证服务器稳定运营&#xff0c;优化游戏体验&#xff0c;《传奇霸业》新版本“炼狱魔域”将代替旧版本“超霸传奇”继续向各大玩家提供游戏服务&#xff0c; 我们将在2016年8月18日对以下区服进行停服维护更新&#xff0c;具体维护时间将视情况提…

jdbc mysql ssh通道_Jdbc使用ssh通道连接Mysql

很多时候&#xff0c;我们可能会出现这种情况&#xff1a;我们的程序无法直接连接数据库&#xff0c;而要通过某一台linux等中间机器来实现一个中转&#xff0c;比如我们的机器是A&#xff0c;数据库是C&#xff0c;A和C不能直接连接&#xff0c;但A可以连接B&#xff0c;B可以…

2018年机器学习趋势与Apache Kafka生态系统相结合

在慕尼黑举行的OOP 2018大会上&#xff0c;我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow&#xff0c;DeepLearning4J或H2O之类的深度学习框架构建可扩展&#xff0c;关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片&#xff0c;并讨论一些有关最新趋势的更…

Java基本语法(13)--条件分支switch-case结构

基本格式结构&#xff1a; switch (表达式/变量) {case 常量1&#xff1a;执行语句1; //情况1case 常量2&#xff1a;执行语句2; //情况2... ... ...default: 以上情况都不满足时执行语句; }说明&#xff1a; switch结构中的表达式/变量只能是如下6种数据类型之一&#xff…

小米岭南通服务器维护,小米岭南通交通联合卡内测开启

原标题&#xff1a;小米岭南通交通联合卡内测开启IT之家12月21日消息 小米岭南通交通联合卡内测开启招募报名&#xff0c;持小米8(含探索版、屏幕指纹版)、小米MIX 系列(不含MIX 3)、小米Note 3/2、小米6/5s/5s Plus手机的用户可开通尝鲜。支持系统小米8和MIX 2S最低支持8.12.2…

mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)

避免索引失效原则(二)注&#xff1a;继上一篇文章继续讲解&#xff1a;避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062作者 &#xff1a; Stanley 罗昊【转载请注明出处和署名&#xff0c;谢谢&#xff01;】体验SQL优化中的概率情况在上一…

js中数组增加添加元素的push方法

特别注意&#xff1a;push&#xff08;&#xff09;方法返回的是增加后新数组的长度&#xff0c;即元素个数。 var arryTest ["星期一","星期二"]; var add "星期三"&#xff1b; var length arryTest.push(add); //length3格式结构&#xf…

ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...

初次尝试用AJAX调用webservice&#xff0c;结果无论怎么设置webservice返回的都是xml对象&#xff0c;一般的jquery处理json是更方便的。webservice理论上将下面这段代码按照说明取消注释&#xff0c;就可以返回json数据了。// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服…

mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

毫不夸张的说&#xff0c;有一半以上的死锁问题由唯一索引贡献&#xff0c;后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,name varchar(1…

ejb 示例 2018_EJB钝化和激活示例

ejb 示例 2018在本教程中&#xff0c;我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息&#xff0c;并在整个会话中保存该信息。 但是&#xff0c;事实是&#xff0c;客户端会话往往会在相当长的时间内保持活动状态…

js微信小程序页面左上角返回跳转指定页面

微信小程序非导航栏tabBar页面左上角返回默认返回上一次的页面&#xff08;即进入当前页面的前一页面&#xff09;&#xff0c;如果需要自定义页面&#xff0c;可以通过js中onUnload函数进行指定页面跳转。 ①关闭所有页&#xff0c;打开url指定页面 onUnload: function () {…

服务器mysql显示链接次数太多,服务器mysql显示链接次数太多

服务器mysql显示链接次数太多 内容精选换一换在本章节中&#xff0c;您将会把游戏应用部署到CCE云容器引擎中&#xff0c;您需要执行以下操作&#xff1a;创建集群&#xff1a;集群是运行应用的逻辑分组&#xff0c;包含一组云服务器资源&#xff0c;每个节点对应一台云服务器。…

laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区

本文档最新版为 8.x&#xff0c;旧版本可能放弃维护&#xff0c;推荐阅读最新版&#xff01;数据库&#xff1a;入门简介Laravel 能使用原生 SQL、查询构造器 和 Eloquent ORM 在各种数据库后台与数据库进行非常简单的交互。当前 Laravel 支持四种数据库:MySQLPostgresSQLiteSQ…

计算机二级web题目(5)--js(Javascript)基础

1 [单选题] 在以下选项中,不合法的标识符是(A)。 A. a*b B. small C. score D. average grade 解析&#xff1a;点击查看标识符命名规则 2 [单选题]在HTML页面中哪些部分能够插入JavaScript?&#xff08;C&#xff09; A. <body>部分 B. <head>部分 C. <body&g…

使用JUnit 5在Mockito中方便地进行模拟–官方方式

从版本2.17.0开始&#xff0c;如果使用JUnit 5&#xff0c; Mockito提供了官方&#xff08;内置&#xff09;支持来管理模拟生命周期。 入门 为了利用该集成&#xff0c;需要在JUnit 5的junit-platform-engine旁边添加Mockito的mockito-junit-jupiter依赖项&#xff08;有关详…

esp32搭建文件服务器,ESP32入门示例 - SD卡Web服务器

这个是来自ESP32官方示例的改版&#xff0c;官方的示例由于存在一些问题所以我进行了修改原本的示例有点逻辑上的问题&#xff0c;所以进行了一些修改主要修改有&#xff1a;1.新增SD卡测试部分 复制自官方SD卡示例2.新增一个根目录页&#xff0c;访问根目录就可以看到3.修改了…

mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

一、 MySQLMyCat分库分表1 MyCat简介java编写的数据库中间件Mycat运行环境需要JDK。Mycat是中间件&#xff0c;运行在代码应用和MySQL数据库之间的应用。前身&#xff1a; corba&#xff0c;是阿里开发的数据库中间件&#xff0c;实现MySQL数据库分库分表集群管理的中间件&…

字符串String截取字符char

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串&#xff0c;将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例&#xff1a; import java.u…

gradle构建工具_Gradle:我们需要另一个构建工具吗?

gradle构建工具在Java开发的早期&#xff0c;我们要么没有太多的构建工具需求&#xff0c;要么就使用了其他环境中的工具。 我仍然记得构建shell脚本并创建用于开发Java的文件。 生成文件特别有趣&#xff0c;因为这是一个在设计时就没有考虑到Java的工具。 迁移到不同的操作系…