这是一个奇怪的要求。
为什么不以正确的方式(或至少以 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;
}
}
第二个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
}
选一个。
笔记
虽然不是每个人都喜欢这个(Jon Skeet 会说“不被普遍接受”),但请看一下我正在使用的 java 编码风格(方法以小写开头,大括号在同一行中)。有时尊重你正在编码的平台很重要。至少我在 C# 中编码时就是这样做的(顺便说一句很少)