java - 爪哇。如何防止将方法引用分配给功能接口类型参数?
问题描述
从 Java SE 8 开始,如果方法的形式参数是函数式接口,则参数可以是实现该接口的对象或对某个方法的引用。这意味着参数也可以是对与接口目的逻辑上不相关的方法的引用。是否可以强制参数仅是实现接口的对象,而不是方法引用?尽管可以通过添加第二个抽象方法使接口不起作用,但仍应实现该附加方法。还有其他方法吗?
解决方案
是否可以强制参数仅是实现接口的对象,而不是方法引用?
那没有。
尽管可以通过添加第二个抽象方法使接口不起作用,但仍应实现该附加方法。还有其他方法吗?
确实,这就是这样做的缺点。您不能提供default
实现,因为恰好具有 1 个非默认方法的接口被视为 FunctionalInterface,并且您不能规定它不是这样。
但是,您可以做的是将该接口转换为抽象类,该类不适合以 lambda/methodref 形式提供。
更一般地说,不要与 java 特性作斗争。如果有人使用方法 ref,他们就知道自己在做什么。或者他们不这样做,但如果他们只是在毫无头绪的情况下磕磕绊绊,相信我,你无法阻止一个白痴通过设计好的 API 和添加你设法收集的每个 linter 规则来破坏代码库。白痴太有创造力了,不能被凡人阻止。
推荐阅读
- c# - SqlException (0x80131904): 无法打开备份设备操作系统错误5(拒绝访问。)
- c++ - 在 C++ 中将连续范围映射到离散箱中
- excel - EXCEL:如果column_A中的单元格包含column_C中的单词,则将单词插入它旁边(来自column_D)INTO B
- angular - TypeError:无法读取茉莉花中未定义的属性“客户端”
- spring-boot - 对多个消息使用者使用手动提交
- html - 如何使用 Vue draggable 将组件列表中的项目拖动到另一个组件中的列表?
- ios - 请求的身份验证范围不足 Google Sheets API Swift
- flutter - Flutter 在网格视图中增加容器高度
- typescript - 类型“字符串”不可分配给类型“ImageSourcePropType”
- python - 无法在 Django 中运行 python 脚本