繁体   English   中英

在重载构造中使用toString()? 怎么样

[英]use toString() in overload construct ? how

我班上有几个构造函数

public class Date {
       ...
       public Date(first case)
       ...
       public Date(second case)
       ...
       public Date(third case)
       ...
       public String toString(){
       ...}

如何在toSTring()中编写代码?

谁能向我解释

toString返回的内容并不取决于您的类中有多少个constructor 它们用于在打印类的实例时return要打印的String表示形式。 您可以返回任何字段或其中的某些字段的串联。

因此,如果您的Person类具有包含idname大约4-5 fields ,并且您想打印用冒号分隔的个人的idname ,那么当您打印实例时,您的toString()如下所示:-

@Override
public String toString() {
    return this.id + " : " + this.name;
}

因此,如果您有一个Person类的实例,其id = 5name = rohitage = 23和一些email id ,则在显示该实例时:-

Person person = new Person(5, "rohit", "rohit@gmail.com", 23);
System.out.println(person);

Person person2 = new Person(6);  // Don't have `name` set
System.out.println(person2);

上面的语句将打印:-

5 : rohit
6 :

作为输出。

但是,您当然可以在toString添加一个条件来检查字段是否为空,并且可以相应地返回一条消息。

public String toString() {
    return case1 != null ? case1 : case2 != null ? case2 : case3 != null ? case3 : null;
}

java toString对于以文本形式表示对象非常有用。 您应该始终覆盖toString(),以便可以访问适当的调试/日志记录。 这是一个可能是一个很好示例的类的示例。

public class Person {
    private final String _name;
    private final Integer _age;
    private final Date _birthday;

    public Person(String name, Integer age, Date birthday) {
        this._name = name;
        this._age = age;
        this._birthday = new Date(birthday.getTime());
    }

    @Override
    public String toString() {
        return "Person [_name=" + _name + ", _age=" + _age + ", _birthday="
                + _birthday + "]";
    }

}

toString方法应表示对象的“状态”,因此与构造函数无关,而与类属性有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM