繁体   English   中英

如何比较Type的实例是否相等

[英]How to compare instances of Type for equality

给定Type的两个实例:

Type type1;
Type type2;

如何检查它们是否equal

我正在调用toString并比较它们的值,例如:

if (type1.toString().equals(type2.toString())) {
    ....
}

我用多个和嵌套的参数化类型进行了测试,到目前为止,它似乎是一致的。 但是我想知道是否有正式的方法可以做到这一点。

Java运行时生成的所有Type实例都具有正确的equals()和hashCode()实现,因此您可以并且应该仅使用equals()进行比较。

例如,用于ParameterizedType的Javadoc包含以下内容:

实现此接口的类的实例必须实现equals()方法,该方法使共享相同泛型类型声明并具有相同类型参数的任何两个实例相等。

Class对象从Object继承其equals()和hashCode()实现,但这是正确的,因为Class对象具有引用相等性。

普通的equals()也应该比将类型转换为字符串快得多,并且内存效率更高。

除非在为Type创建的任何类中显式定义了toString()方法,否则除非它们是同一对象, 否则每次都会得到false。 如果您只是尝试对Type a; Type b;使用a.equals(b) ,也是如此Type a; Type b; Type a; Type b; equals()仅比较两个对象的地址值。 如果要检查两个不同分配的对象是否包含相同的对应成员变量,则必须在该类中定义equals()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM