第十条:始终要覆盖toString()方法】的更多相关文章

Object类提供的toString()方法如下: public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 如果我们直接打印一个对象,就会调用这个对象的toString()方法,如果我们没有为该类覆盖toString()方法, 我们可以看出toString()方法,返回的是 "类名@散列值的十六进制". toString(…
java.lang.Object提供了toString方法的一个实现,它包含类的名称,以及一个“@”符号,接着是散列码的无符号十六进制表示法,例如“PhoneNumber@163b91”.在实际应用中,toString方法应该返回对象中包含的所有值得关注的信息. 指定toString返回值的格式有不足之处:如果这个类已经被广泛使用,一旦指定格式,就必须始终如一地坚持这种格式.无论是否决定指定格式,都应该在文档中明确地表明意图. 参考资料 <Effective Java 中文版 第2版> 第10…
始终要覆盖toString   虽然java.lang.Object提供了toString方法的一个实现,但它返回的字符串通常并不是类的用户所期望看到的.它包含类的名称,以及一个"@"符号,接着是散列码的无符号十六进制表示法,例如"PhoneNumber@163b91".toString的通用约定指出,被返回的字符串应该是一个"简介的,但信息丰富,并且易于阅读的表达形式"[JavaSE6].尽管有人认为"PhoneNumber@163b…
java.lang.Object的toString方法的实现: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 这通常不是用户期望看到的,它包含类名称,一个“@”符号,以及散列码的无符号十六进制表示法. toString通用约定指出,被返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”,进一步的约定指出,建议所有的子类都覆…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 12. 始终重写 toString 方法 虽然Object类提供了toString方法的实现,但它返回的字符串通常不是你的类的用户想要看到的. 它由类名后跟一个"…
在学习本篇博文前,建议先学习完本人的博文--<详解 继承(上)-- 工具的抽象与分层> 在本人之前的博文中曾讲过"基类"的知识,那么,本篇博文中的主题--Object类 和 基类的知识就密切相关了,那么,我们就直接进入主题吧. Object类 是JAVA所提供的一个类类型,且是 所有类的基类. 因为所有类都继承于 Object类,所以,Object类的方法 自然而言就成为 其他类的方法. 而在特殊情况下,子类继承父类时,对于父类的方法的实现过程可能不太满意. 为了处理这种情…
当我们代码怎么编写的时候,在代码级别上构成了方法的覆盖呢? 两个类必须要有继承关系. 重写之后的方法和之前的方法具有:相同的返回值类型 相同的方法名 相同的形参列表 访问权限不能更高,只能更低 重写之后的方法不能抛出更多的异常可以更少 (一):toString方法的作用:将"Java对象转换"成"字符串的形式"…
覆盖equals方法时请遵守通用约定   覆盖equals方法看起来很简单,但是有许多覆盖方式会导致错误,并且后果很严重.最容易避免这种类问题的方法就是不覆盖equals方法,在这种情况下,类的每个实例都只能与它自己相等.如果满足了一下任何一个条件,这都是所谓期望的结果: 类的每个实例的本质上都是唯一的.对于代表活动实体而不是值的类来说确实如此,例如Thread.Object提供的equals实现对于这些类来说正式正确的行为. 不关心类是否提供了"逻辑相等"的测试功能.例如java.u…
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+1}" 反射获取函数源代码的功能很强大,使用函数对象的toString方法有严重的局限性.toString方法的局限性ECMAScript标准对函数对象的toString方法的返回结果(即该字符串)并没有任何要求.这意味着不同的js引擎将产生不同的字符串,甚至产生的字符串与该函数并不相关. 如果函数…
重写(继承关系) 子类得成员方法和父类的成员方法,方法名,参数类型,参数个数完全相同,这就是子类的方法重写了父类的方法. 重载 在一个类里有两个方法,方法名是完全一样的,参数类型或参数个数不同. 例子: //父类 public class Pet { public void eat(){ System.out.println("pet eat"); } public void eat(String a){ //重载,同一个类,方法名相同,参数类型或个数不同 System.out.pri…