以下哪个选项的函数能够执行成功? 为什么?
A:
public class Type {
public enum TypeEnum {
ZERO,
ONE
}
private TypeEnum type;
public TypeEnum getType() {
return type;
}
public void setType(TypeEnum type) {
this.type = type;
}
public String getTypeString() {
switch (type) {
case ZERO:
return "ZERO";
case ONE:
return "ONE";
default:
return "OTHER";
}
}
}
B:
public class Type {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTypeString() {
switch (type) {
case "0":
return "ZERO";
case "1":
return "ONE";
default:
return "OTHER";
}
}
}
C:
public class Type {
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getTypeString() {
switch (type) {
case 0:
return "ZERO";
case 1:
return "ONE";
default:
return "OTHER";
}
}
}
D:
public class Type {
private Integer type;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getTypeString() {
switch (type) {
case 0:
return "ZERO";
case 1:
return "ONE";
default:
return "OTHER";
}
}
}
答案:
以上选项只有 C 可以正常执行,其他的都会报空指针异常。
首先看以下阿里巴巴Java开发手册 如下:
当 switch 括号内的变量类型为 String 并且此变量为外部参数时,必须先进行 null
判断。
由于Integer默认初始值为null,而int默认初始值是0,所以 C 选项可以正常执行。
打赏
当前共有 1 条评论
感谢分享