Ada*_*ter 5 java equality instance
我注意到Eclipse生成以下代码equals:
public class MyClass {
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyClass other = (MyClass) obj;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
特别感兴趣的是这段代码:
if (getClass() != obj.getClass())
return false;
Run Code Online (Sandbox Code Playgroud)
该代码假定Class返回的对象getClass()将是同一类的所有对象的相同实例(不仅仅是等效实例).也就是说,他们认为没有必要像这样写:
if (getClass().equals(obj.getClass()))
return false;
Run Code Online (Sandbox Code Playgroud)
Java是否正式记录了该getClass()方法的这种行为?
biz*_*lop 11
是的,只要两个类由同一个类加载器加载,类对象就是一样的.
但如果不是,那么这两个类必须被视为不同,即使它们可能共享相同的名称和代码.(这在使用多个类加载器时很容易遇到,因此值得记住.)
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |