それはいくつかの奇妙な要件です。
なぜそれを正しい方法 (または少なくとも Java の方法) で行わないのですか? 関数から 2 つの結果を取得しようとするようなものです。Subtract( 2 , 2 ) と同様に、0 と「おはようございます」を返します。
とにかく、これらの 2 つのオプションを試すことができます。
1位。StringBuilder String を「構築」していないため、使用するのに最適なものではありません。
public static void doStuff(){
String msg = "";
StringBuilder sb = new StringBuilder();
if ( getMessage( sb ) ) {
System.out.println( sb );
}
}
public static boolean getMessage( StringBuilder sb ) {
if ( "".equals( sb.toString() )) {
sb.delete( 0, sb.length() );
sb.append("It was empty");
return true;
} else {
return false;
}
}
2番目のStringHolder(そのことについては何でもホルダー) Javaスタイルでもありませんが、仕事をします。これは、私が知っているほとんどの Java 開発者が使用するものです。
public static void doStuff(){
String msg = "";
String [] holder = { msg };
if ( getMessage( holder ) ){
System.out.println( holder[0] );
}
}
public static boolean getMessage( String [] holder ) {
if ( "".equals( holder[0] )) {
holder[0] = "It was empty";
return true;
} else {
return false;
}
}
3番目。オプション。あなたが何を求めたかではなく、私が何をするか。残念ながら、「ブール値を返す」条件に違反しています。
public void doStuff() {
String msg = "";
String result = getMessage( msg );
if ( result != msg ) {
System.out.println( result );
}
}
public static String getMessage( String msg ) {
if ( "".equals(msg){
return "It was empty";
}
return msg
}
1 つ選択します。
ノート
誰もがこれを好むわけではありませんが (Jon Skeet は「広く受け入れられていません」と言うでしょう)、私が使用している Java コーディング スタイル (小文字で始まり、同じ行に中括弧で始まるメソッド) を見てください。コーディングしているプラットフォームを尊重することが重要な場合があります。少なくとも、C# でコーディングするときはそうしています (非常にまれです)。