如何解决爪哇如何防止将方法引用分配给功能接口类型参数?
从 Java SE 8 开始,如果方法的形参是函数式接口,则参数可以是实现该接口的对象或对某个方法的引用。这意味着参数也可以是对与接口目的在逻辑上不相关的方法的引用。是否可以强制参数只是实现接口的对象,而不是方法引用?尽管可以通过添加第二个抽象方法使接口不起作用,但仍应实现该附加方法。还有别的方法吗?
解决方法
是否可以强制参数只是实现接口的对象,而不是方法引用?
没有。
虽然可以通过添加第二个抽象方法使接口不起作用,但仍应实现该附加方法。还有别的方法吗?
确实,这是这样做的缺点。您不能提供 default
实现,因为只有 1 个非默认方法的接口被视为 FunctionalInterface,并且您不能规定它不是这样。
但是,您可以做的是将该接口转换为抽象类,该类不能以 lambda/methodref 形式提供。
更一般地说,不要与 Java 特性抗争。如果有人使用方法引用,他们就知道自己在做什么。或者他们没有,但如果他们只是在没有任何线索的情况下蹒跚而行,相信我,你无法阻止一个白痴通过设计好的 API 和添加你管理的每个 linter 规则来破坏代码库一起凑热闹。白痴太太有创造力了,不能被凡人阻止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。