Java 当您有两个构造函数时重写toString()
我当前的类,Java 当您有两个构造函数时重写toString(),java,tostring,Java,Tostring,我当前的类,seriescuitclass包含两个构造函数: public SeriesCircuit(Circuit input1, Circuit input2) { this.circuit1 = input1; this.circuit2 = input2; } public SeriesCircuit(ParallelCircuit parallelCircuit, Circuit circuit1) { this.parallelCircuit = para
seriescuit
class包含两个构造函数:
public SeriesCircuit(Circuit input1, Circuit input2)
{
this.circuit1 = input1;
this.circuit2 = input2;
}
public SeriesCircuit(ParallelCircuit parallelCircuit, Circuit circuit1)
{
this.parallelCircuit = parallelCircuit;
this.circuit1 = circuit1;
}
使用.toString()
方法,我可以打印出第一个构造函数的值,如下所示:
public String toString()
{
return circuit1.getResistance() + " + " + circuit2.getResistance();
}
注意:.getResistance()
get返回的值只是两倍,因此示例输出类似于以下字符串:2.0+3.0
我的问题是,既然我有两个构造函数,它们提供两种不同的输入类型,我如何只重写一个.toString()
来输出两种不同类型的构造函数输入
例如,在我的主要工作中,我这样做:
系列电路s1=新系列电路(新电路(2.0)、新电路(3.0))代码>
串联电路s2=新串联电路(新并联电路(s1,新电路(4.0)),新电路(1.0))代码>
我可以使用System.out.println(s1)
打印出s1
,但由于我从未为第二个构造函数指定.toString()
条件,因此我期望得到一个NullPointerException
构造您的toString()
关于不基于构造函数的实例字段和它必须是一些描述性和简短的
如果需要,则可以对值使用布尔标志或非空检查,否则将在输出中获得null
使用或附加字符串值
编辑
值得一读
-
-
-
无论您有哪些构造函数,toString()
都应该反映对象的状态,不多也不少。通常,从toString()
返回的字符串将显示对象字段的状态,如果一些字段为null,则也应显示该字段
我主要使用toString()
进行调试,再次显示程序运行时对象的状态。它实际上不应该用于生产输出,这就是为什么我认为您的问题不是问题。您可以设置一个布尔变量,该变量对于一个构造函数为true,对于另一个构造函数为false。在toString中,您只需对该变量执行if-else,并以这种方式执行两个不同的输出。首先检查属性parallelcuit
是否已初始化(如果属性null
):
我明白你的意思。假设一个实例变量为null,我们知道使用了一个构造函数?建议更改为parallelcuit==null
,而不是!=null
,因为如果并联电路
为null
,则表示使用了构造函数1。这是一个家庭作业,向我们展示了如何重写.toString()
方法:)。
public String toString() {
if(parallelCircuit == null) {
return circuit1.getResistance() + " + " + circuit2.getResistance();
}
else {
return parallelCircuit.getResistance() + " + " + circuit1.getResistance();
}
}