Это странное требование.
Почему бы не сделать это правильным образом (или, по крайней мере, способом Java)? Это как пытаться получить два результата от функции. Как вычитание (2, 2) возвращает 0 и «Доброе утро, сэр».
Ну, в любом случае, вы можете попробовать эти два варианта.
первый. StringBuilder Не самая лучшая вещь для использования, так как вы не "строите" строку.
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;
}
}
2nd 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;
}
}
третий. Вариант. не то, что ты спросил, а то, что я буду делать. К сожалению, нарушает условие возврата логического значения.
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
}
Выберите один.
Примечание
Хотя не всем это нравится (Джон Скит сказал бы: «Не общепринятый»), пожалуйста, взгляните на стиль кодирования Java, который я использую (методы начинаются со строчных букв и фигурных скобок в одной строке). Иногда важно уважать платформу, на которой вы кодируете. По крайней мере, это то, что я делаю, когда я пишу код на C # (очень редко)