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

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

如何用映射容纳方法引用

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

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

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

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

以上就是如何用映射容纳不同类、不同返回值类型的 getter 方法引用?的详细内容,更多请关注其它相关文章!