我正在使用Eclipse Build id:20120614-1722.
我有一个名为"TOY1"的对象类和一个函数toString().我以前知道,当我打电话给
System.out.println(TOY1);
Run Code Online (Sandbox Code Playgroud)
它应该返回地址.但是,由于某种原因,它返回为我的对象声明的toString(),而没有指定@Override表示法.
保持这种方式是否安全?或者这是我在特定构建中实现的新功能.
谢谢
编辑
如上所述,这是我的代码的一部分:
public class TOY1 {
//irrelevant declarations
public String toString() {
String data;
data="Manufacturer=";
data+=manufact;
data+="DOP:";
data+=date_of_production;
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
在声明TOY1实例TOY1然后使用打印输出时 System.out.printIn(TOY1_instance)
我得到的是实际数据,而不是一些垃圾地址.
我的问题是我在哪里覆盖它没有显示警告,没有扩展覆盖此类.
System.out.println(obj);在obj.toString()内部打电话.toString()如果你不覆盖默认实现,它会返回一些类似地址的值.
您可以省略@Override注释,但使用它更安全.当你认为自己是压倒性而不是因为签名上的细微差别时,它变得特别有用.例如:
@Override
public String tostring() //...
Run Code Online (Sandbox Code Playgroud)
不会编译.更常见的错误是错误的equals():
@Override
public boolean equals(TOY1 obj) //...
Run Code Online (Sandbox Code Playgroud)
你明白为什么吗?如果没有@Override它,很容易错过这样一个巨大的错误.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |