この問題に遭遇したため、Java でオブジェクトがどのように機能するかについてかなり混乱しています。
checkDateValue という関数があるとしましょう (コードは次のようになります)
private boolean checkDateValue(Date d1, String msg) {
if (d1 == null) {
msg = "d1 is null!";
return false;
}
return true;
}
この関数を呼び出す場所は次のとおりです。
String msg = null;
Date d1 = null;
if (!checkDateValue(d1, msg)) {
system.println(msg); //msg is still null.....
//what I need is the message generated in the function
}
私の知る限り、カスタマイズされたオブジェクトを配置した場合(例
myObj { private String msg;}
) を関数に変換し、関数内で msg の値を変更します。関数から出ると、msg の変更が保持されます。ただし、Javaでは文字列もオブジェクトと見なされると思います。変更が保持されないのはなぜですか?