有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用相等运算符比较两个类

使用相等运算符比较类实例有哪些缺陷

boolean compareTypes(Class<?> clazz, Class<?> rootClazz) {
    return clazz == rootClazz;
}

共 (2) 个答案

  1. # 1 楼答案

    这样做可能更明智

    boolean compareTypes(Class<?> clazz, Class<?> rootClazz) {
        return clazz.getName().equals(rootClazz.getName());
    }
    

    或者getName()的某些版本,例如getSimpleName()

  2. # 2 楼答案

    没有真正的陷阱;它的行为与您预期的一样,如果您预期实际的行为:)此外,Class对象的equals()方法只是从Object继承的方法,它使用==操作符

    唯一令人惊讶的是,如果同一个类文件由两个不同的类加载器加载,您将得到两个单独的类对象,它们将作为false进行比较。这是故意的