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 参数为方法

jdk8 参数为方法_JDK 8中的几乎命名的方法参数相关推荐

  1. jdk8 接口默认方法_JDK 8中方便的新地图默认方法

    jdk8 接口默认方法 Map接口在JDK 8中提供了一些方便的新方法 . 因为我在本文中介绍的Map方法是作为默认方法实现的,所以Map接口的所有现有实现都享有在默认方法中定义的默认行为,而无需任何 ...

  2. php的set 方法调用,PHP中 对象自动调用的方法:set()、get()、tostring()

    总结: (1)__get($property_name):获取私有属性$name值时,此对象会自动调用该方法,将属性name值传给参数$property_name,通过这个方法的内部 执行,返回我们传 ...

  3. android post方法吗,Android中使用Post请求的方法

    本文实例讲述了Android中使用Post请求的方法.分享给大家供大家参考.具体如下: 一.需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中 ...

  4. java invoke 方法说明_java中的反射,invoke方法

    invoke,就是通过函数名反射调用相应的函数.以下代码简单地介绍了java反射中invoke方法 package org.curry.tool; import java.lang.reflect.M ...

  5. html目录参数加密,从HTML文件中取出JS加密需要的参数,并调用js内的加密算法

    简介这篇文章主要介绍了从HTML文件中取出JS加密需要的参数,并调用js内的加密算法以及相关的经验技巧,文章约2677字,浏览量385,点赞数2,值得参考! 背景,爬虫程序需要模拟登陆,账号密码是经j ...

  6. 访问母版页控件、属性、方法及母版页中调用内容页的方法

    首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令 <%@ MasterType VirtualPath="~/Master/M ...

  7. html方法介绍,html中noframes标签的使用方法介绍

    html中noframes标签的使用方法介绍 发布时间:2020-04-17 09:35:28 来源:亿速云 阅读:672 作者:小新 这篇文章主要为大家详细介绍了html中noframes标签的使用 ...

  8. 捕获计算机屏幕++方法,在Win10中获取屏幕截图的五大方法

    如果您是Win10的新手,或者甚至是专业人士在Win10中截取屏幕截图与其他操作系统相比有些困难.屏幕截图在某些情况下可以节省您的时间.此外,如果您指定截屏的所有不同方式,尤其是在Win10中,您绝对 ...

  9. java数组排序法方法_JAVA数组中五种常见排序方法

    前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...

最新文章

  1. ssh登录虚拟机上的linux
  2. ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测
  3. 查看winpe系统的语言版本
  4. vue如何使用原生js写动画效果_深入理解 Vuejs 动画效果
  5. oracle反复查询一个集合,oracle集合查询
  6. Apache Thrift 环境配置
  7. 微信小程序:wx.getUserInfo 接口的变动与使用
  8. centos 网络自动连接_自动连接最优信号 腾讯云?云兔解决物联网络连接问题
  9. 全国计算机二级模拟考试软件,全国计算机等级考试模拟考试软件
  10. [内附完整源码和文档] 基于JAVA的干部档案管理系统
  11. DATEDIF函数:
  12. Travelling Salesman Problem(旅行商问题)
  13. 华为鸿蒙推送机型,华为鸿蒙系统开始推送,这15款机型可率先升级,有你的吗?...
  14. 分析界面,在全国公共资源交易平台使用java获取全国的招投标数据接口
  15. 自定义形状seekbar学习
  16. 前端之文本、长度、颜色、字体、背景-36
  17. ubuntu使用指南——root用户的设置、使用ssh远程登录、创建普通用户无法登录系统、远程重启或关闭服务器
  18. 达梦数据库定位阻塞方法举例
  19. 医学杂识-脑电数据-TRC文件解读分析
  20. Mac 安装 Truffle 和 Ganache

热门文章

  1. BATJ面试必会|Jvm 虚拟机篇
  2. Redis 再牛逼,也得设置密码
  3. jsoup解析HTML用法小结
  4. 阅读器关闭时尝试调用Read无效时的解决方法
  5. Photoshop的绘图工具
  6. 使用ueditor实现多图片上传案例——ServiceImpl层(ShoppingServiceImpl)
  7. 使用spring实现邮件的发送(含测试,源码,注释)
  8. 利用命令来打开所有程序,这个装逼给满分!
  9. 马踏棋盘算法(骑士周游)
  10. 生成方法中参数的注释