问题标签 [equals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
244 浏览

c# - 可以为接口引用定义 == 的行为吗?

如果接口继承了 IEquatable,则实现类可以定义 Equals 方法的行为。是否可以定义 == 操作的行为?

通过比较它们的值来检查两个 IFoo 引用是否相等:

是否可以if (X == Y)在 Foo 上使用 Equals 方法?

0 投票
3 回答
2273 浏览

java - 如何避免,那个 URL.equals 需要在 Java 中访问互联网?

equals()Java 类库中 URL 类的方法发出 DNS 请求以获取主机名的 IP,以检查两个 IP 是否相等。即使是从相同的String. 有没有办法避免这种互联网访问?

0 投票
4 回答
4237 浏览

vb.net - 为什么是 Type.Equals(t1, t2) 而不是等式运算符?

为什么必须Type.Equals(t1, t2)使用确定等价类型,而不是相等运算符(例如对于 VB.NET,t1 = t2)?

它似乎与 .NET API 的其他部分不一致。

VB.NET 中的示例:

If GetType(String) = GetType(String) Then Debug.Print("The same, of course") End If

导致“ Operator '=' is not defined for types 'System.Type' and 'System.Type'.”的编译时错误

0 投票
6 回答
3737 浏览

c# - 如何比较相同但不受约束的泛型类型的两个元素是否相等?

可能重复:
不能将运算符 == 应用于 C# 中的泛型类型吗?

我有以下泛型类,编译器抱怨“ Operator '!=' cannot be applied to operands of type 'TValue' and 'TValue'”(参见CS0019):

如果我限制TValueclass,我可以使用Object.Equals(). 由于我对结构和类都需要这个,但如果我能避免这种情况,我会很高兴。

所以问题是,我如何比较两个相同但不受约束的泛型类型的元素是否相等?

0 投票
2 回答
4293 浏览

jsp - 如何在 JSP 中使用 equals() 方法?

在我的 JSP 中,我需要使用该equals()方法测试两个对象。有没有办法使用 EL、JSTL 或其他标签库来做到这一点?由于团队规则,我不允许使用 scriptlet。

我尝试使用 JSTL<c:if>标记,但它似乎只使用==运算符。

0 投票
7 回答
7362 浏览

java - 比较两个对象是否相等的替代方法是什么?

http://leepoint.net/notes-java/data/expressions/22compareobjects.html

事实证明,定义 equals() 并非易事。事实上,要做到这一点相当困难,尤其是在子类的情况下。Horstmann 的 Core Java Vol 1 对这些问题的最佳处理。

如果 equals() 必须始终被覆盖,那么什么是避免被迫进行对象比较的好方法?有哪些好的“设计”替代品?

编辑:

我不确定这是否符合我的预期。也许这个问题应该更像是“你为什么要比较两个对象?” 根据您对该问题的回答,是否有替代解决方案来进行比较?我不是说,equals 的不同实现。我的意思是,根本不使用平等。我认为关键是从这个问题开始,为什么要比较两个对象。

0 投票
4 回答
12986 浏览

java - Findbugs 警告:Equals 方法不应假设任何关于其参数类型的内容

在我的项目上运行 FindBugs 时,我遇到了一些上述错误的实例。

也就是说,我的 equals 覆盖版本将 RHS 对象转换为与定义覆盖版本的对象相同的类型。

但是,我不确定是否有可能有更好的设计,因为 AFAIK Java 不允许方法参数发生变化,因此无法为 equals 参数定义任何其他类型。

是我做错了什么,还是 FindBugs 太急切了?

表达这个问题的另一种方式是:如果传递给 equals 的对象与 LHS 的类型不同,那么正确的行为是什么:这是错误的,还是应该有例外?

例如:

0 投票
2 回答
1098 浏览

java - 在 Web 服务存根中生成等于

从我们的后端生成的所有 webservice-stubs 都有一个类似于这个的 equals 方法:

有人可以向我解释一下的目的__equalsCalc吗?我只是不明白。它不在课堂上的其他地方使用。在我看来,在计算“平等”期间它并不完全为空。然而 equals 是声明的synchronized。因此,在任何给定时间只能有一个线程在其中。我看不出来,为什么if (__equalsCalc != null)应该永远是真的。

请告诉我我愚蠢的误解;-)

编辑:我是该项目的新手,因此我的回答可能是错误的。但是如果我正确地跟踪它,该方法是由axis-wsdl2java生成的

0 投票
2 回答
1268 浏览

c# - InternalEquals(object objA, object objB) 的实现在哪里

在使用 Reflector 反汇编 .Net 源代码时,我发现了 Object Class 中的 Equals 实现,它指的是

这又是指

我现在很困惑在哪里可以找到这个InternalEquals(object objA, object objB)函数的实现,它是如何使用这个函数的,这个函数是在哪个 .Net 程序集中定义的,以及如果每个东西都是从头开始为 .Net 源代码编写的,那么为什么我找不到这个函数的实现。

0 投票
8 回答
8243 浏览

java - 如何确保 hashCode() 与 equals() 一致?

当覆盖 java.lang.Object 的 equals() 函数时,javadocs 建议,

每当重写该方法时,通常都需要重写 hashCode 方法,以维护 hashCode 方法的一般约定,即相等的对象必须具有相等的哈希码。

hashCode() 方法必须为每个对象返回一个唯一的整数(这在根据内存位置比较对象时很容易做到,只需返回对象的唯一整数地址)

应该如何覆盖 hashCode() 方法,以便它仅基于该对象的属性为每个对象返回一个唯一的整数?