Java


JAVA.COMPARE.EQUALS.CN : Comparison to Class Names (Java)

Summary

Class names are compared with equals(). This is not a reliable check for class equality, because multiple classes might have the same name.

Properties

Class Name Comparison to Class Names (Java)
Significance reliability
Mnemonic JAVA.COMPARE.EQUALS.CN
Categories
CWE CWE:486 Comparison of Classes by Name
Availability Available for Java only.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Comparison to Class Names (Java)"

Example

// Main.java
public class Main {
 
    public static void main(String[] args) {
        String s = "";
        Object o = "";
        if(o.getClass().getSimpleName().equals(s.getClass().getSimpleName())) // 'Comparison to Class Names (Java)' warning issued here
            // ... 
    }
}

Resolution

To check if two objects have the same class, use the getClass() method and the == operator.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.