Java 8 链式方法参考?

2023-12-12

假设有一个典型的Java Bean:

class MyBean {
    void setA(String id) {
    }

    void setB(String id) { 
    }

    List<String> getList() {
    }
}

我想在 BiConsumer 的帮助下创建一种更抽象的方式来调用设置器:

Map<SomeEnum, BiConsumer<MyBean, String>> map = ...
map.put(SomeEnum.A, MyBean::setA);
map.put(SomeEnum.B, MyBean::setB);
map.put(SomeEnum.List, (myBean, id) -> myBean.getList().add(id));

有没有办法替代 lambda(myBean, id) -> myBean.getList().add(id)使用链式方法引用,例如(myBean.getList())::add or myBean::getList::add或者是其他东西?


不,方法引用不支持链接。在您的示例中,不清楚这两个方法中的哪一个应该接收第二个参数。


但如果你坚持这样做……

static <V,T,U> BiConsumer<V,U> filterFirstArg(BiConsumer<T,U> c, Function<V,T> f) {
    return (t,u)->c.accept(f.apply(t), u);
}

BiConsumer<MyBean, String> c = filterFirstArg(List::add, MyBean::getList);

该方法的命名建议将其视为采用现有的BiConsumer (here, List.add)并添加一个函数(这里,MyBean.getList()) 到它的第一个参数。很容易想象用于过滤第二个参数或同时过滤两个参数的等效实用方法可能是什么样子。

但是,它主要用于将现有实现与其他操作相结合。在你的具体例子中,使用部位并不比普通的lambda表达式好

BiConsumer<MyBean, String> c = (myBean, id) -> myBean.getList().add(id);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8 链式方法参考? 的相关文章

  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • java 中的梵文 i18n

    我正在尝试使用来自互联网的示例 ttf 文件在 java 中使用 i18n 进行梵文 印地文 我可以加载资源包条目 还可以加载 ttf 并设置字体 但它不会根据需要呈现 jlabel 它显示块代替字符 如果我在 Eclipse 中调试 我可
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 为什么通过 方法向 List 添加元素(类型正确)会出现编译错误? [复制]

    这个问题在这里已经有答案了 我对泛型通配符概念几乎没有疑问 1 假设我有一个方法 void write List
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • 从 CLI 部署 Maven 项目?

    在 IDE 中构建并运行良好 cd home thufir NetBeansProjects HelloMaven JAVA HOME usr lib jvm java 8 openjdk amd64 home thufir local s
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个

随机推荐

  • 输入属性未接收数据

    我正在尝试将数据传递到我的组件 这是组件的代码 export class requestDetailComponent Input id Input name Input email Input purpose Input programm
  • 在 Windows 批处理文件中嵌入 VBScript

    是否可以将 VBScript 嵌入到批处理文件中 我目前有一个 CMD 文件 它使用以下命令调用 VBS 文件 cscript NoLogo MyScript vbs 但我更愿意只分发一个 CMD 文件 EDIT 有一个类似的问题 其答案是
  • 带有寻呼机 TopAndBottom 的 GridView

    我在 ASP NET 中扩展了标准 GridView 控件 基本上是一样的 但是分页和排序是使用回调完成的 我已经成功创建了自己的 PagerTemplate 但它仅在 PagerSettings Position 设置为 Top 时才有效
  • 数据库模式,自动增量

    这里有数据库问题 是否可以对二级或三级 ID 进行自动增量 我需要制作一些基于版本的东西 所以想象一下 ID Phrase PhraseID PhraseVersion 1 1 1 2 1 2 3 1 3 4 2 1 添加到数据库时 Phr
  • Android通知图标问题

    我有一个奇怪的问题 我有两种方式在 Android 应用程序中发送通知 一个来自 Android 服务 另一个通过 FCM 场景如下 无论应用程序是否正在运行 从 Android 服务发送的通知的图标都会正确显示 当应用程序运行时 如果我通
  • 绑定(这个)是什么意思?

    我已经知道绑定的作用是将给定的对象或函数绑定到您想要的函数 但是bind this 这真的让我很困惑 是什么意思this in bind真正意思 下面是我的带有 firebase 数据库的 React 应用程序的代码 componentWi
  • 在启用 ARC 的 C 代码中执行 Objective-C 代码时出现运行时内存泄漏警告

    ARC 已启用并且bufferReady正在由 C 库 未启用 ARC 触发 并且我确信我在某处缺少 ARC 转换 请指教 提前致谢 使用下面的代码 implementation HelloWorldLayer id refToSelf r
  • Laravel 使用 AngularJS 只存储多个文件上传文件中的一个文件

    早上好或晚上好 这取决于您何时阅读此主题 我使用 Angular 和 Laravel 编写了这段代码来上传多个文件 但是我从请求中得到的只是一个文件对象 所有其他文件对象都被释放 因此在 laravel 控制器中不会在 foreach 中循
  • 为什么这个记忆实现对匿名函数有效,但对声明的函数无效?

    我正在尝试使用记忆来优化斐波那契函数的显式自递归实现 下面是相当标准的实现 一个简单且相当幼稚的实现 但重点关注实际问题 Function prototype memoize function var originalFunction th
  • 在 GetMessage 循环中未接收到 WM_COMMAND

    有人可以解释一下为什么我从未收到过WM COMMAND我的 GetMessage 循环中的消息 我已经检查过 WndProc 正在接收WM COMMAND消息 所以我很困惑为什么这不起作用 while GetMessage msg NULL
  • .htaccess 重定向后隐藏子目录 url

    我正在将网站重定向到我创建的子目录 该子目录包含 WordPress 的安装 现在我想从网站中屏蔽该子目录 url 现在是这样的http mywebsite com apt 我想从 URL 中删除 apt 我今天尝试了一切 在谷歌上搜索 尝
  • 使用服务层时配置 IoC 容器的正确层是什么?

    我有一个中等大小的 asp net MVC 应用程序 它使用一个服务层来处理所有存储库的使用 调用域服务等 我的控制器操作非常精简 它们基本上调用一个服务类 获取响应并显示该响应 大多数组件都是基于一些穷人的 DI 的接口 该应用程序正在不
  • Pygame 绘图旋转 90 度

    因此 如果您有机会看到我之前的问题 您就会知道我正在与一位朋友一起重现康威的生命游戏 我遇到了另一个问题 绘图由于某种奇怪的原因而被旋转 我认为 x 和 y 位置有问题 但我似乎找不到解决方法 任何帮助表示赞赏 这是代码 Import go
  • 构造函数隐式删除

    下面列出了相关代码 您可以查看https godbolt org z 3GH8zD 我确实可以解决编译器编译错误 但我并不完全清楚其背后的原因 我将不胜感激对这个问题有一些帮助 struct A int x A int x 1 x x us
  • .obj 中已定义变量,但没有循环包含[重复]

    这个问题在这里已经有答案了 我知道 SO 上已经有很多类似的问题和解决方案 我读过它们 但没有一个能帮助我解决我的问题 我创建了一个用于记录的类 这是Logger h ifndef LOGGER H define LOGGER H name
  • java.io.NotSerializedException - org.omnifaces.taghandler.Converter

    我有一个在 Jboss 6 上使用 Primefaces 3 5 和 Omnifaces 1 5 的应用程序 使用 myfaces 2 1 5 尝试使用o converter我收到以下错误 org omnifaces taghandler
  • 使用数组求偶数和奇数平均值

    编写一个程序 从用户那里读取 10 个值的列表 将值放入数组中 程序应读取数组 然后计算并显示偶数输入值和奇数输入值的平均值 这应该使用对象 方法和测试器类来完成 我不明白为什么我收到错误 二元运算符的操作数类型错误 我不知道该改变什么 我
  • 使用 CloudFormation 模板部署 IIS 网站

    我有一个 Visual Studio C 部署包 zip 已将其推送到我的 S3 存储 我想运行我的 CloudFormation 脚本并让它创建 IIS 服务器的实例 我有用于此的脚本 然后将 Visual Studio 网站从 S3 存
  • 使用 cron 安排 R 脚本

    我正在尝试使用 cron 安排我的 R 脚本 但它不起作用 R 似乎在 cron 中找不到包 有人可以帮助我吗 谢谢 以下是我的 bash 脚本 source my profile home winie profile script R w
  • Java 8 链式方法参考?

    假设有一个典型的Java Bean class MyBean void setA String id void setB String id List