Eq: Covariant equals() method defined (EQ_SELF_NO_OBJECT)
This pattern may be partially implemented.
Description
This class defines a covariant version of equals(). To correctly override the equals() method in java.lang.Object, the parameter of equals() must have type java.lang.Object.
SP Implementation
spotbugs
- Condition 1:
!hasEqualsObject && hasEqualsSelf
hasEqualsObject = true if method.isPublic() && "equals".equals(name) and the signature is (Ljava/lang/Object;)Z
hasEqualsSelf = true if method.isPublic() && "equals".equals(name) and sig.equals("(L" + getClassName() + ";)Z") (getClassName() should return current class name)
- Condition 2:
!usesDefaultEquals
usesDefaultEquals = true if Values.DOTTED_JAVA_LANG_OBJECT.equals(whereEqual)
- Condition 3:
"java.lang.Enum".equals(superclassName)
- It should be another pattern EQ_DONT_DEFINE_EQUALS_FOR_ENUM
加上 online/local search 可进一步判断是不是 abstract class,进一步区分出 Eq: Abstract class defines covariant equals() method
Eq: Covariant equals() method defined (EQ_SELF_NO_OBJECT)
This pattern may be partially implemented.
Description
This class defines a covariant version of
equals(). To correctly override the equals() method injava.lang.Object, the parameter ofequals()must have typejava.lang.Object.SP Implementation
spotbugs
!hasEqualsObject && hasEqualsSelfhasEqualsObject = trueifmethod.isPublic() && "equals".equals(name)and the signature is(Ljava/lang/Object;)ZhasEqualsSelf = trueifmethod.isPublic() && "equals".equals(name)andsig.equals("(L" + getClassName() + ";)Z")(getClassName()should return current class name)!usesDefaultEqualsusesDefaultEquals = trueifValues.DOTTED_JAVA_LANG_OBJECT.equals(whereEqual)"java.lang.Enum".equals(superclassName)加上 online/local search 可进一步判断是不是 abstract class,进一步区分出 Eq: Abstract class defines covariant equals() method