java 为什么2个org.apache.hc.core5.http.Header在创建相同内容时不相等?

4ktjp1zp  于 10个月前  发布在  Java
关注(0)|答案(1)|浏览(55)

为什么

import org.apache.hc.core5.http.Header;

Assertions.assertEquals(new BasicHeader("name", "value", true), new BasicHeader("name", "value", true));

字符串
或者是

Assertions.assertEquals(new BasicHeader("name", "value", false), new BasicHeader("name", "value", false));


Assert失败?
这可能与生成不同的散列码有关,但我看不出--如果这应该是原因--为什么会这样。

gajydyqb

gajydyqb1#

BasicHeader类不会覆盖equals方法,因此它使用Object类中equals方法的默认实现。
equals方法的默认实现会检查两个对象是否是同一个instance,即是否具有相同的内存地址
相反,您可以逐个元素进行Assert,例如:

BasicHeader header1 = new BasicHeader("name", "value", true);
BasicHeader header2 = new BasicHeader("name", "value", true);

assertEquals(header1.getName(), header2.getName());
assertEquals(header1.getValue(), header2.getValue());
assertEquals(header1.isSensitive(), header2.isSensitive());

字符串
注:还有其他方法。

相关问题