【发布时间】:2020-06-15 20:45:49
【问题描述】:
我在返回值 null 并将其替换为另一个类使用 getter 和 setter 的有意义的值时遇到问题,我想知道我做错了什么。
getter 和 setter 的配置:
public class CarClass {
private String make;
private String model;
private int yearOfMake;
public void setMake(String make){
if (make.isEmpty()){
this.make = "";
System.out.println("Error please input value");
} else {
System.out.println("Hello");
this.make = make;
}
}
public String getMake(){
return make;
}
public String getModel() {
return model;
}
public void setModel(String model) {
if (model.isEmpty()){
this.model = "";
System.out.println("Error, you have not entered a valid model");
} else {
this.model = model;
}
}
public int getYearOfMake() {
return yearOfMake;
}
public void setYearOfMake(int yearOfMake) {
if (yearOfMake > 1900)
this.yearOfMake = yearOfMake;
else {
this.yearOfMake = yearOfMake;
System.out.println("Year of make is invalid");
}
}
}
上面的执行脚本:
public class GetterSetter {
public static void main(String[] args) {
CarClassTwo bmw = new CarClassTwo();
bmw.setMake();
System.out.println(bmw.getMake());
CarClass benz = new CarClass();
benz.setModel("C300");
System.out.println(benz.getModel());
benz.setYearOfMake(1999);
System.out.println(benz.getYearOfMake());
System.out.println("!!!!!!!!");
benz.setModel("C300");
System.out.println(benz.getModel());
benz.setYearOfMake(1800);
System.out.println(benz.getYearOfMake());
System.out.println(bmw.getMake());
System.out.println(bmw.getModel());
}
}
如果能帮助我理解我做错了什么,我们将不胜感激。
【问题讨论】:
-
您遇到的具体问题是什么? NullPointerException?
-
这段代码中没有任何地方检查是否有内容为空。您在几个地方调用
isEmpty(),但如果变量为空,则会引发异常。如果你想检查(例如)make是否为空,你应该写if (make==null)... -
但是如果
setMake方法需要一个参数,你也不能在没有参数的情况下调用setMake()。不传递参数与该参数为 null 不同。 -
啊,我想我明白你说的话了。我想做的是检查默认变量是否为空,只显示一条错误消息“你必须输入一些东西”
标签: java if-statement null this getter-setter