在类构造函数中进行两个选择

abstract class TV extends electronics{
    private double diagonal;
    private String signal;
    private int channel;

    public TV() {}

    public TV(LocalDate productionDate,String name,int counterOnOff,boolean isOn,double diagonal,String signal,int channel) {
        super(productionDate,name,counterOnOff,isOn);
        this.diagonal= diagonal;
        this.signal= ????;
        this.channel= channel;
    }
}

????的位置,我需要插入两个值(模拟值和数字值)(不完全是在那里,创建对象时只需要从两个选项中选择)。我不知道如何在构造函数中实现两个选项。

我试图制作一个private String signal数组,但是它(需要)要求两个数组值,我需要从两个选项中进行选择。该课程还将有setter和getter。

skymiandu02 回答:在类构造函数中进行两个选择

因为您正在学习:

定义并使用枚举

public enum Signal {
    ANALOG,DIGITAL,INVALID    
}

然后更改

private String signal;

private Signal signal;

以及构造函数:

public TV(... boolean isOn,double diagonal,Signal signal,int channel) {

请记住,对于那些可能很稳定并且属于一个普通“组”的变量,枚举是一个很好的选择。

,

上面的答案更具可读性(我也希望用枚举来做),但是您也可以使用布尔值。

替换private String signal;
private boolean isDigital;

,然后在您的构造函数中将其更改为
public TV([...]double diagonal,boolean isDigital,int channel) {

编辑: 与枚举相比,优点是可以直接在if语句中使用,如
if(isDigital)
您不必像
那样编写相等性检查 if(signal == Signal.DIGITAL)

建议:我不建议使用String来存储状态。在您的情况下,状态为模拟/数字。您需要确保始终在各处使用相同的字符串(比较时字符串区分大小写)。您可以通过编写常量来帮助它,但是每个状态都需要一个常量。

本文链接:https://www.f2er.com/3065108.html

大家都在问