打字猴:1.700442354e+09
1700442354
1700442355
1700442356 编写高质量代码:改善Java程序的151个建议 [:1700438118]
1700442357 编写高质量代码:改善Java程序的151个建议 建议49:推荐覆写toString方法
1700442358
1700442359 为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码:
1700442360
1700442361 public class Client{
1700442362
1700442363 public static void main(String[]args){
1700442364
1700442365 System.out.println(new Person(“张三”));
1700442366
1700442367 }
1700442368
1700442369 }
1700442370
1700442371 class Person{
1700442372
1700442373 private String name;
1700442374
1700442375 public Person(String_name){
1700442376
1700442377 name=_name;
1700442378
1700442379 }
1700442380
1700442381 /*name的getter/setter方法省略*/
1700442382
1700442383 }
1700442384
1700442385 输出的结果是:Person@1fc4bec。如果机器不同,@后面的内容也会不同,但格式都是相同的:类名+@+hashCode,这玩意就是给机器看的,人哪能看得懂呀!这就是因为我们没有覆写Object类的toString方法的缘故,修改一下,代码如下所示:
1700442386
1700442387 public String toString(){
1700442388
1700442389 return String.format(”%s.name=%s”,this.getClass(),name);
1700442390
1700442391 }
1700442392
1700442393 如此就可以在需要的时候输出可调试信息了,而且也非常友好,特别是在Bean流行的项目中(一般的Web项目就是这样),有了这样的输出才能更好的debug,否则查找错误就如海底捞针呀!当然,当Bean的属性较多时,自己实现就不可取了,不过可以使用apache的commons工具包中的ToStringBuilder类,简洁、实用又方便。
1700442394
1700442395 可能有读者要说了,为什么通过println方法打印一个对象会调用toString方法?那是源于println的实现机制:如果是一个原始类型就直接打印,如果是一个类类型,则打印出其toString方法的返回值,如此而已!
1700442396
1700442397
1700442398
1700442399
1700442400 编写高质量代码:改善Java程序的151个建议 [:1700438119]
1700442401 编写高质量代码:改善Java程序的151个建议 建议50:使用package-info类为包服务
1700442402
1700442403 Java中有一个特殊的类:package-info类,它是专门为本包服务的,为什么说它特殊呢?主要体现在3个方面:
[ 上一页 ]  [ :1.700442354e+09 ]  [ 下一页 ]