Examples
没找到
编译失败的写法:
只要方法名、参数个数与顺序、参数类型与Object.equals方法相同,不管怎么改返回值和权限修饰符,都会编译失败。
boolean equals(Object obj)
public Boolean equals(Object obj)
报 EQ_SELF_USE_OBJECT:
class Custom{
public boolean equals(Custom c){...}
}
实现思路
spotbugs 实现
- 变量解释
- hasEqualsObject: 当方法满足 `public boolean equals(Object)` 时为 true,意为有正确重写Object类中的 equals 方法
- hasEqualsSelf: equals 方法只有参数类型不满足标准写法,且参数是当前所在类类型而非Object类型时为 true
- hasEqualsOther: 当参数类型为其他
- usesDefaultEquals: 当该 equals 方法继承自 java.lang.Object,而不是其它 class 重新定义的
- 步骤:
- !hasEqualsObject && !hasEqualsSelf && hasEqualsOther
- usesDefaultEquals
对于参数类型,我们只能判断是否是 Object; 对于参数类型是所在类的情况,对应的是 EQ_SELF_USE_OBJECT pattern. 故决定暂时搁置该 pattern。
欢迎大家提出自己的想法。
Eq: equals() method defined that doesn’t override Object.equals(Object) (EQ_OTHER_USE_OBJECT)
Examples
没找到
编译失败的写法:
只要方法名、参数个数与顺序、参数类型与Object.equals方法相同,不管怎么改返回值和权限修饰符,都会编译失败。
报 EQ_SELF_USE_OBJECT:
实现思路
spotbugs 实现
对于参数类型,我们只能判断是否是 Object; 对于参数类型是所在类的情况,对应的是 EQ_SELF_USE_OBJECT pattern. 故决定暂时搁置该 pattern。
欢迎大家提出自己的想法。