在 class 构造函数中制作两个选项
Making two options in class constructor
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
成为一个数组,但它要求(它应该)提供两个数组值,我需要从两个选项中进行选择。 class.
也将有 setter 和 getter
因为你正在学习:
定义并使用枚举
public enum Signal {
ANALOG,
DIGITAL,
INVALID
}
然后改变
private String signal;
到
private Signal signal;
还有构造函数:
public TV(... boolean isOn, double diagonal, Signal signal, int channel) {
请记住,对于可以是常量且属于常见 "group"...
的变量,枚举是一个不错的选择
上面的答案更具可读性(我也更喜欢用枚举来做),但你也可以使用布尔值。
替换private String signal;
和
private boolean isDigital;
并在您的构造函数中将其更改为
public TV([...]double diagonal, boolean isDigital, int channel) {
编辑:
与枚举相比的优势在于它可以直接在 if
语句中使用,例如
if(isDigital)
.
您不必像
这样编写相等性检查
if(signal == Signal.DIGITAL)
作为建议:我不建议使用 String
来存储状态。在您的情况下,状态将是 analog/digital。您需要确保始终在所有地方使用相同的字符串(比较时字符串区分大小写)。您可以通过编写常量来帮助它,但是您需要为每个状态使用一个常量。
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
成为一个数组,但它要求(它应该)提供两个数组值,我需要从两个选项中进行选择。 class.
因为你正在学习:
定义并使用枚举
public enum Signal {
ANALOG,
DIGITAL,
INVALID
}
然后改变
private String signal;
到
private Signal signal;
还有构造函数:
public TV(... boolean isOn, double diagonal, Signal signal, int channel) {
请记住,对于可以是常量且属于常见 "group"...
的变量,枚举是一个不错的选择上面的答案更具可读性(我也更喜欢用枚举来做),但你也可以使用布尔值。
替换private String signal;
和
private boolean isDigital;
并在您的构造函数中将其更改为
public TV([...]double diagonal, boolean isDigital, int channel) {
编辑:
与枚举相比的优势在于它可以直接在 if
语句中使用,例如
if(isDigital)
.
您不必像
这样编写相等性检查
if(signal == Signal.DIGITAL)
作为建议:我不建议使用 String
来存储状态。在您的情况下,状态将是 analog/digital。您需要确保始终在所有地方使用相同的字符串(比较时字符串区分大小写)。您可以通过编写常量来帮助它,但是您需要为每个状态使用一个常量。