Questions tagged «equals»

引用Java equals方法,指示某个对象是否“等于”该对象。

30
如何确定两个JavaScript对象的相等性?
严格的相等运算符会告诉您两个对象类型是否相等。但是,有没有办法判断两个对象是否相等,就像 Java中的哈希码值一样? 堆栈溢出问题JavaScript中是否存在某种hashCode函数?与这个问题相似,但需要更多的学术答案。上面的场景演示了为什么必须要有一个,而我想知道是否有任何等效的解决方案。


17
==和Equals()之间的C#差异
我在Silverlight应用程序中有一个条件,该条件比较2个字符串,由于某种原因,当我使用==它时,它返回false,而.Equals()返回true。 这是代码: if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack")) { // Execute code } if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack") { // Execute code } 为什么会这样呢?
548 c#  .net  equals 

4
创建完美的JPA实体
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我已经使用JPA(实现休眠)一段时间了,每次我需要创建实体时,我都会遇到诸如AccessType,不可变属性,equals / hashCode等问题。 因此,我决定尝试找出每个问题的最佳常规做法,并写下来供个人使用。 但是,我不介意让任何人对此发表评论或告诉我我错了。 实体类 实现可序列化 原因:规范要求您必须这样做,但是某些JPA提供程序没有强制执行此操作。作为JPA提供程序的Hibernate不会强制执行此操作,但是如果尚未实现Serializable,它可能会因ClassCastException失败而失败。 建设者 用实体的所有必填字段创建一个构造函数 原因:构造函数应始终使创建的实例保持健全状态。 除了这个构造函数:还拥有一个包私有的默认构造函数 原因:Hibernate需要默认构造函数来初始化实体;允许使用private,但是在没有字节码检测的情况下,包私有(或公共)可见性对于运行时代理生成和有效的数据检索是必需的。 字段/属性 在一般情况下使用字段访问,在需要时使用属性访问 原因:这可能是最有争议的问题,因为没有明确的,令人信服的论点(财产使用权与实地使用权);但是,由于更清晰的代码,更好的封装并且无需为不可变字段创建设置器,因此字段访问似乎是普遍喜欢的方法 省略不可变字段的设置器(访问类型字段不需要) 属性可能是私有的 原因:我曾经听说保护(Hibernate)的性能更好,但是我在网上可以找到的是:Hibernate可以直接访问公共,私有和受保护的访问器方法,以及公共,私有和受保护的字段。 。选择取决于您,您可以将其匹配以适合您的应用程序设计。 等于/哈希码 如果仅在持久化实体时设置此ID,请不要使用生成的ID 根据喜好:使用不可变值形成唯一的业务密钥,并使用它来测试是否相等 如果唯一的业务密钥不可用,则使用在初始化实体时创建的非临时UUID;有关更多信息,请参见这篇出色的文章。 从不引用相关实体(ManyToOne);如果此实体(如父实体)需要成为业务密钥的一部分,则仅比较ID。只要使用属性访问类型,在代理上调用getId()不会触发实体的加载。 实体实例 @Entity @Table(name = "ROOM") public class Room implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue @Column(name = …
422 java  hibernate  jpa  equals 


23
从集合中获取元素
为什么不Set提供获取等于另一个元素的元素的操作? Set<Foo> set = ...; ... Foo foo = new Foo(1, 2, 3); Foo bar = set.get(foo); // get the Foo element from the Set that equals foo 我可以问一下 Set包含一个等于的元素bar,那么为什么不能得到那个元素呢?:( 为了明确起见,该equals方法被覆盖,但是它仅检查一个字段,而不是全部。因此,两个Foo被认为相等的对象实际上可以具有不同的值,这就是为什么我不能只使用foo。
322 java  collections  set  equals 



4
IEquatable和仅重写Object.Equals()有什么区别?
我希望我的Food课程能够在等于的另一个实例时进行测试Food。稍后将针对列表使用它,并且我想使用其List.Contains()方法。我应该实施IEquatable<Food>还是仅重写Object.Equals()?从MSDN: 此方法通过使用默认的相等比较器确定相等,该比较器由对象的IEquatable.Equals方法实现,用于T(列表中值的类型)。 所以我的下一个问题是:.NET框架的哪些函数/类使用了Object.Equals()?我应该首先使用它吗?
183 c#  .net  equals  equality  iequatable 

11
有什么理由在生成.equals()时更喜欢getClass()而不是instanceof?
我正在使用Eclipse生成.equals()和.hashCode(),并且有一个标记为“使用'instanceof'比较类型”的选项。缺省是不选中此选项并用于.getClass()比较类型。有什么我.getClass()比我更喜欢的理由instanceof吗? 不使用instanceof: if (obj == null) return false; if (getClass() != obj.getClass()) return false; 使用instanceof: if (obj == null) return false; if (!(obj instanceof MyClass)) return false; 我通常会选中该instanceof选项,然后进入并删除“ if (obj == null)”检查。(这是多余的,因为空对象将始终失败instanceof。)是否有任何不好的主意?

27
如何检查我的字符串是否等于null?
仅当我的字符串具有有意义的值时,我才想执行一些操作。所以,我尝试了这个。 if (!myString.equals("")) { doSomething } 还有这个 if (!myString.equals(null)) { doSomething } 还有这个 if ( (!myString.equals("")) && (!myString.equals(null))) { doSomething } 还有这个 if ( (!myString.equals("")) && (myString!=null)) { doSomething } 还有这个 if ( myString.length()>0) { doSomething } 在所有情况下doSomething,尽管我的字符串为EMPTY,但我的程序仍然有效。等于null。那么,这有什么问题呢? 添加: 我找到了问题的原因。该变量被声明为字符串,结果,null分配给该变量的结果变为"null"!因此,if (!myString.equals("null"))作品。

4
BigDecimal equals()与compareTo()
考虑简单的测试类: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); } } …

8
Apache Commons等于/ hashCode构建器
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我很好奇,这里的人们对使用org.apache.commons.lang.builder EqualsBuilder/ HashCodeBuilder 实施equals/有hashCode什么看法 ?比编写自己的方法更好吗?它与Hibernate配合使用是否很好?你怎么看?



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.