CompareObjectsWithEquals的目的PMD规则

时间:2016-09-02 10:40:30

标签: java pmd

我刚刚在PMD中违反了CompareObjectsWithEquals规则,因为我使用' =='来比较两个对象引用。而不是等于(),但我努力想知道为什么这是一个问题,并且找不到任何理由来解决这个问题。

我很欣赏Object.equals()比较引用,因此具有相同的效果,但我没有使用原始对象,因此我无法保证不会覆盖方法某些点在层次结构的某个地方。

我想做一个参考比较,我想确保这总是一个参考比较。为什么PMD会强迫我调用equals()?

只是我,还是这是一个非常愚蠢的规则?

编辑: 需要明确的是 - 我不是在问==equals()之间的区别(根据What is the difference between == vs equals() in Java?) - 我完全理解这一点。我问为什么当调用者可能合法地希望确保执行参考比较时,PMD会强迫我总是使用equals()

2 个答案:

答案 0 :(得分:1)

在您的情况下,您知道自己在做什么,并且需要比较引用,以确保规则不适用。你必须使用html2canvas($("#map"), { useCORS: true, onrendered: function(canvas) { var mapsourceUrl = canvas.toDataURL();//here i am getting the error });

但大部分时间,新Java开发人员试图使用==而不是==来比较对象的价值时,这是一个错误。

答案 1 :(得分:0)

加入@YMomb:

PMD和那些静态分析工具总是将最终决定留给用户。如果您认为您的设计是正确的,则您有权忽略任何规则。