重写toString()

Posted ishuping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重写toString()相关的知识,希望对你有一定的参考价值。

  刚开始用Java写软件的时候,无论知不知道JavaBean,都没有习惯重写toString(),大神除外,书上或者老师可能提到过要重写toString(),但初学者很难注意到这个操作。

  重写toString()有什么用呢?最大的用处就是方便调试,System.out.println()是很常用的调试方式。如,有个JavaBean类Person,里面有很多属性,如名字、年龄和性别等,当你需要打印查看属性时,一般初学者常常一行打印一条属性,而且懒得加上提示字符串,当代码量增加,逻辑变得复杂,这样的调试会试代码变得臃肿,而且会给自己调试带来麻烦,重复写提示字符串的繁琐、忘记先打印哪个属性和多个同类型的打印导致混乱等问题很容易让自己烦躁。

  所以,凡是写JavaBean类或者类似的类时,不妨重写toString(),以清晰明了的方式展示类及其属性,方便自己也方便他人。

  以下是代码简例:

/**
 * 重写toString() 
 */
public class Test {

    public static void main(String[] args) {
        Person person = new Person("学生A", 20, true);
        
        /*System.out.println("name: " + person.getName());
        System.out.println("age: " + person.getAge());
        System.out.println("isBoy: " + person.isBoy());*/
        
        System.out.println(person);
    }

}

class Person {
    private String name;
    private int age;
    private boolean boy;
    
    public Person(String name, int age, boolean boy) {
        this.name = name;
        this.age = age;
        this.boy = boy;
    }
    
    @Override
    public String toString() {
        return "Person ["+ 
                "name:" + name +
               "; age:" + age  +
             "; isBoy:" + boy  + "]";
    }
    
    /**
     * eclipse下快速生成getter/setter的方法
     * 非常常使用
     * 快键键:
     * 1. alt + shift + s"
     * 2. r
     * 3. tab
     * 4. 回车
     * 5. shift + tab
     * 6. 回车
     */
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public boolean isBoy() {
        return boy;
    }
    public void setBoy(boolean boy) {
        this.boy = boy;
    }
    public void setName(String name) {
        this.name = name;
    }
}

技术分享图片

 

以上是关于重写toString()的主要内容,如果未能解决你的问题,请参考以下文章

为啥要重写toString方法和hashcode方法

具有委托属性的类的toString重写限制

怎么让重写ToString()变成不再是体力活

java重写toString方法

重写toString()

重写Object.toString()总结