Java Object.equals

Alp*_*eta 3 java equals object

有人能告诉我为什么这会返回真的吗?我想如果我将某些内容转换为例如Object然后调用.equals,则将使用默认实现Object.并且s1 == s2应该返回false: - /

请告诉我在哪个主题下我可以找到更多关于此行为的信息.

   Set<String> s1 = new HashSet<String>(as("a"));
   Set<String> s2 = new HashSet<String>(as("a"));

   Object o1 = (Object)s1;
   Object o2 = (Object)s2;

   System.out.println(o1.equals(o2));
Run Code Online (Sandbox Code Playgroud)

Bri*_*ach 5

因为这正是Javadocs所说的:

public boolean equals(Object o)
将指定对象与此set进行相等性比较.如果给定对象也是一个集合,则返回true,两个集合具有相同的大小,并且给定集合的每个成员都包含在此集合中.这可确保equals方法在Set接口的不同实现中正常工作.

仅仅因为你施展它Object并没有改变它实际上是什么.使用了过度使用的equals()方法HashSet.