可爱的equals和hashcode,所有的理论都在这里,也在这里
我已经决定在我的许多休眠实体/域对象中使用 equals() 和 hashcode() 中自动生成的 id。
但是,许多网站表示您永远不应该这样做,因为在比较或使用哈希码的过程中第一次将对象持久保存到数据库中的风险。
我的观点是,在大多数用例中,这比更改任何其他字段的可能性要小得多。
单个域对象在首次创建时会生成一次 id,而几乎所有其他字段在正常业务流程中都有机会被更改(甚至可以更改唯一的用户名……)。
在我的许多域对象中,唯一 id 几乎是唯一需要考虑的合适字段(人、地址、宠物、...客户等?组合字段是一个好主意,但从不使用自动生成的 id,我认为,不是很好的建议。
我还缺少其他东西吗?
class Animal
{
}
class Dog extends Animal
{
}
class main
{
public static void main(String args[])
Animal g= new Dog();
System.out.println(g instanceof Dog); // 1st case
System.out.println(g instanceof Animal); // 2nd case
}
Run Code Online (Sandbox Code Playgroud)
问题:为什么两种情况下输出都是 true ?