java – 在不失去通用性的情况下包装逆变函数接口
我有一些具有这种通用结构的代码:
这本身就足够了.现在我想变得更自由,如果有人,比如,一个Func< Number>或者Func< Object>而不是Func< Double>他们仍然可以将其传递给计算机.先验,这应该是足够安全的.很好,所以我把它改成了
不幸的是现在lambda没有进行类型检查(说Eclipse),因为oa的类型不能传递给f.apply. 将f本身赋值给g似乎并不担心编译器,如果要应用的参数是A而不是Optional< A>,则不会出现问题. 不幸的是,似乎没有办法命名? super double参数类型,所以我可以再次使用它作为g的类型和/或用老式的内部类替换lambda. 例如,这甚至在语法上都不允许:
是否有任何相当优雅的方式来完成这项工作? 到目前为止,我提出的最好的是
编译器接受了这一点,但间接调用除了使类型检查器满意之外别无其他原因并不是我称之为优雅的. 最佳答案
尝试这个奇怪的技巧:
像这样映射可选类型允许编译器将可选类型“转换”为一致类型. Ideone demo 这确实有创建新的Optional实例的缺点. 但是,当然,I asked this question会考虑这是否实际上是规范允许的内容,或者是错误. 就个人而言,我发现你的“目前为止最好”特别令人震惊.当然,这取决于真实代码的外观. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – Primefaces Captcha消失或无效更新/刷新无效输入?
- 如何模拟javax.servlet.ServletInputStream
- Java – 寻找比PriorityQueue更快的东西
- java – 使JFace TableViewer使用它周围的复合调整大小?
- 缩放JavaFx:当内容大小超过ScrollPane视口时,会滚动Scroll
- java – 将自定义对象绑定到JMS MapMessage
- java – 从mysql网站检索时没有选择数据库
- 来自Effective Java的第9项(等于合同):示例是否正确?
- Java数据结构和算法之冒泡排序(动力节点Java学院整理)
- Java基于外观模式实现美食天下食谱功能实例详解