我是Java的新手,现在正在学习equals和==以及equals和toString的重新定义。
我想同时使用我已经重新定义的toString方法和从Object类继承的默认方法。
我试图使用super修饰符来调用那个方法,但失败了。
这只是为了教育目的。如果您看一下我的代码中的注释,就能更清楚地了解我想要的内容。
你能帮我吗?
我的代码如下:
public class EqualTest{
public static void main(String[] args){
Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
//System.out.super.println(alice1);
Employee alice2 = alice1;
//System.out.super.println(alice2);
Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
//System.out.super.println(alice3);
System.out.println("alice1==alice2: " + (alice1==alice2));
System.out.println("alice1 == alice3: " + (alice1==alice3));
System.out.println("alice1.equals(alice3): " + alice1.equals(alice3));
}
}
class Employee{
...
public String toString(){
return getClass().getName() + "[name = " + name +
", salary=" + salary + ", hireDay=" + hireDay + "]";
}
}
toString()
。但我没有看到任何要求实际上获取地址的要求,只需使用super.toString()
可用的toString()
的原始结果即可,尽管您未指定的“失败”。您实际的问题仍然不清楚。 - user207421hashCode()
来获取对象的地址,在某些情况下它可能有效,但在其他情况下可能会失败。例如,根据规格说明,某些JVM可能会将完全随机的数字存储为每个对象的hashcode值。实际上,这可能不是真实情况,因为这会导致不必要的存储开销。无论如何,在Java中,通常不需要关注对象位于哪个内存地址。Java不是C语言。 - Alderath