如何用映射容纳不同类、不同返回值类型的 getter 方法引用?

ID:17251 / 打印

如何用映射容纳不同类、不同返回值类型的 getter 方法引用?

如何用映射容纳方法引用

声明一个映射来存储方法引用,这些方法引用是类的getter方法,但属于不同的类,具有不同的返回值类型,如User::getUsername、Group::getName、Post::getId。

函数式接口可以接收单个方法引用,但其泛型参数因方法签名而异。声明容纳这些函数式接口的映射时,难以指定通用的泛型参数。

一位开发者提供了使用IntelliJ IDEA代码提示的解决方案。在一个新行输入Arrays.asList(getUsername, getId)后,输入.var并回车。IDEA会提示列表类型和变量名,类型为List extends Function, ?>>。

映射声明类似,但类型声明进行了简化:Map>。存入方法引用时,需进行类型转换,例如存入Group::getId:map.put("id", (Function) Group::getId)。

上一篇: 使用 volatile 变量控制多线程交替打印「FooBar」时如何避免死锁?
下一篇: 文本框数据无法写入文件,如何解决?

作者:admin @ 24资源网   2024-11-27

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。