我正在尝试找出如何根据重载的构造函数创建单独的toString方法。以下面的代码为例:
public class Employee {
private double salary;
private String name;
public Employee(String name) {
this.name = name;
}
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
}
现在,我想实现一个依赖于创建的对象的toString方法并输出相应的值。(即只输出名称,另一个输出名称和工资的方法)我只需要一个toString方法和需要添加if-else语句吗?
对不起,如果这是一个愚蠢的问题,我只是在学习Java的绳索。
答案 0 :(得分:0)
您只能拥有一个 toString()
,但您可以确定对象的“状态”并相应地将字符串放在一起。例如,您可以使用-1
的工资表示第一个构造函数被调用。因此,您的toString()
将如下所示:
@Override
public String toString() {
if (salary < 0) {
...
} else {
...
}
}
不要忘记在第一个构造函数中将salary
设置为-1
。
答案 1 :(得分:0)
首先,让你的薪水为负两倍(希望没有人付钱)...然后,将你的name
字段默认为null。最后,检查toString()中的空值(或负数)。所以,像这样 -
private double salary = -1;
private String name = null;
public Employee(String name) {
this.name = name;
}
public Employee(String name, double salary) { // <-- salary isn't an int.
this.name = name;
this.salary = salary;
}
public String toString() {
StringBuilder sb = new StringBuilder();
if (name != null) {
sb.append(name);
if (salary > 0) { // = only if both are valid.
sb.append(" = ");
}
}
if (salary > 0) {
sb.append(salary);
}
return sb.toString();
}
答案 2 :(得分:0)
你在这里做的只是实例化构造函数,它与任何方法无关。构造函数只是帮助您初始化和排序,为您将要使用的变量提供上下文。
如果你说,打印或输出薪水和名字,你必须创建如下方法:
public String printName(){
return name;
}
public String printAll(){
return name + "" + String.valueOf(salary);
}