关于Java的equals方法
//(~省略~)
// 正しい例
private final String 定数1 = "hogehoge";
private String 変数1 = null;
if(定数1.equals(変数1)){
System.out.println("同じ値です");
}else{
System.out.println("違う値です");
}
// nullPointExceptionは発生せずに、「違う値です」が出力される。
// 悪い例
private final String 定数1 = "hogehoge";
private String 変数1 = null;
if(変数1.equals(定数1)){
System.out.println("同じ値です");
}else{
System.out.println("違う値です");
}
// nullPointExceptionが発生する。
像上面所述的那样,在equals方法中比较常量和变量时,最好将常量放在前面进行记录。这是在代码审查中被指出的问题。
有读者在评论中指出,为了避免出现 nullPointerException,应该添加明确检查 null 值的处理步骤,因此我想要进行如下修改。
//(~省略~)
// 正しい例(nullチェックを追加)
private final String 定数1 = "hogehoge";
private String 変数1 = null;
if(変数1 != null){
if(定数1.equals(変数1)){
System.out.println("同じ値です");
}else{
System.out.println("違う値です");
}
}else{
System.out.println("nullです");
}
// nullPointExceptionは発生せずに、「nullです」が出力される。
// nullチェックを行って改善した例
private final String 定数1 = "hogehoge";
private String 変数1 = null;
if(変数1 != null){
if(変数1.equals(定数1)){
System.out.println("同じ値です");
}else{
System.out.println("違う値です");
}
}else{
System.out.println("nullです");
}
// nullPointExceptionが発生せずに、「nullです」が出力される。