スタック・オーバーフロー Asked on November 22, 2021
下記のような実装についてうまい修正方法を教えていただきたいです
private boolean isChange(String oldStr, String newStr){
if(StringUtils.isEmpty(oldStr)){
if(StringUtils.isEmpty(newStr)){
return true;
}else{
return false;
}
} else if (StringUtils.isEmpty(newStr)){
return true;
}
if(!oldStr.equals(newStr)){
return true;
}
return false;
}
下記のような実装についてうまい修正方法を教えていただきたいです
isChangeのメソッド名から、新旧に変動があった場合はtrue、変動がなかったらfalseを返すメソッドを作りたいのだと勝手に解釈しました。
以下はコードの修正例です。StringUtilsは使っていません。
null
と""
空文字列を同一視しません。null
から""
に変化する場合、その逆も変動したと判定します。
private boolean isChange(String oldStr, String newStr) {
if (oldStr == null && newStr == null) {
return false; //変動なし
}
else if (oldStr == null || newStr == null) {
return true; //変動あり
}
else if (newStr.equals(oldStr)) {
return false; //変動なし
} else {
return true; //変動あり
}
}
metropolisさんのコメントを参考にStringUtils
を調べてみました。
次のコードはnull
と""
空文字列を同一視します。null
から""
に変化する場合、その逆も変動なしと判定します。
if (StringUtils.isEmpty(oldStr) && StringUtils.isEmpty(newStr)) {
return false;
}
else if (StringUtils.equals(oldStr, newStr)) {
return false;
} else {
return true;
}
次のコードはnull
と""
空文字列を同一視しません。null
から""
に変化する場合、その逆も変動ありと判定します。
private boolean isChange(String oldStr, String newStr) {
return !StringUtils.equals(oldStr, newStr);
}
Answered by akira ejiri on November 22, 2021
true が返る条件は,newが空であり、old.epual(new)がfalseの場合
つまり
private boolean isChange(old, new){
if(StringUtils.isEmpty(new)){
return true;
}else{
return !old.equal(new)
}
}
もっと短くするのであれば下でも行けるかと。
可読性下がるのでおすすめはしませんが。
return StringUtils.isEmpty(new) ? (true) : (!old.equal(new))
あと、"new"は予約語なので適切な変数名にしたほうが良いです。
引数の型宣言もないので適切にする必要があります。
Answered by kareidscope 1123 on November 22, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP