java - 拒绝在 Groovy 上使用 ==(或更改其行为)
问题描述
我怎样才能拒绝使用==
Groovy 文件(或使其完全平等地工作?)
为了拒绝使用,我更喜欢任何解决方案,例如:
- 编译甚至运行时的命令行参数
- 禁用它的注释
- 一个环境变量
在最坏的情况下,我将尝试使用 Gradle 来执行此操作,搜索字符串并==
在*.groovy
发现任何情况时阻止构建。我也可以尝试 Sonar,但我更喜欢 Groovy 的内置功能(当然,如果存在这样的东西)
任何使 == 与 equals 完全一样的解决方案也很棒。
原因:
我有一个大项目,并意识到会发生一些问题,因为==
与equals()
. 运算符==
使用compareTo()
if 类扩展Comparable
,忽略equals()
and的值hashCode()
。参考:http ://docs.groovy-lang.org/docs/latest/html/documentation/#_behaviour_of_code_code
更新 1
用例:一个用例是:假设您有 Dogs 对象,其中包含字段:id
和name
. 要检查相等性,我们需要使用id,因为 id 是唯一的。但是,要按名称按字母顺序对狗进行排序,我需要使用compareTo
,检查该name
字段。而且因为 2 条狗可以有相同的名字,Groovy 认为这dog(id:1, name:'rex')
与dog(id:2, name:'rex')
解决方案
推荐阅读
- ios - 使用 RxSwift 更新 UIButton 标题并相应地选择操作
- asp.net-mvc - 如何使用 chart.js 根据用户输入创建图表
- node.js - 节点评估脚本没有按预期工作
- python-3.x - 如何解决赋值前引用的局部变量并正确返回模板中的表单数据?
- rest - rest api 嵌套结构怎么表达?
- angular - Angular:div ngIf* 中的条件自定义管道
- python - 船舶到海岸线的距离(以海里为单位)
- apache-flink - 如果我的 Flink 应用程序需要高并行接收器,最佳实践是什么?
- selenium - Selenium 不支持的命令扩展问题
- javascript - d3液态水图从d3v3到v4的转换