如何在Java中使用输出参数?
有人可以给我一些在函数中使用输出参数的示例代码吗?我试图谷歌它,但只是在功能中找到它。我想在另一个函数中使用此输出值。
我正在开发的代码打算在Android中运行。
有人可以给我一些在函数中使用输出参数的示例代码吗?我试图谷歌它,但只是在功能中找到它。我想在另一个函数中使用此输出值。
我正在开发的代码打算在Android中运行。
Java 按值传递;没有像C#那样的参数。out
您可以使用 或改变作为引用传递的对象(按值)。return
public class FunctionSample {
    static String fReturn() {
        return "Hello!";
    }
    static void fArgNoWorkie(String s) {
        s = "What am I doing???"; // Doesn't "work"! Java passes by value!
    }
    static void fMutate(StringBuilder sb) {
        sb.append("Here you go!");
    }
    public static void main(String[] args) {
        String s = null;
        s = fReturn();
        System.out.println(s); // prints "Hello!"
        fArgNoWorkie(s);
        System.out.println(s); // prints "Hello!"
        StringBuilder sb = new StringBuilder();
        fMutate(sb);
        s = sb.toString();
        System.out.println(s); // prints "Here you go!"
    }
}
至于OP需要帮助的代码,以下是使用特殊值(通常用于引用类型)来指示成功/失败的典型解决方案:null
而不是:
String oPerson= null;
if (CheckAddress("5556", oPerson)) {
   print(oPerson); // DOESN'T "WORK"! Java passes by value; String is immutable!
}
private boolean CheckAddress(String iAddress, String oPerson) {
   // on search succeeded:
   oPerson = something; // DOESN'T "WORK"!
   return true;
   :
   // on search failed:
   return false;
}
请改用返回类型,with 表示失败。Stringnull
String person = checkAddress("5556");
if (person != null) {
   print(person);
}
private String checkAddress(String address) {
   // on search succeeded:
   return something;
   :
   // on search failed:
   return null;
}
这就是java.io.BufferedReader.readLine()的工作方式,例如:它返回(可能是一个空字符串!),直到它返回以指示“搜索”的结束。instanceof Stringnull
当然,这并不局限于引用类型返回值。关键是必须存在一些从非有效值的特殊值,并且您将该值用于特殊目的。
另一个典型的例子是 String.indexOf:它返回以指示搜索失败。-1
注意:因为Java没有“输入”和“输出”参数的概念,所以使用和前缀(例如,)是不必要的和单一的。
i-o-iAddressoPerson
如果需要返回多个值,通常它们以某种方式相关(例如 和单个的坐标)。最好的解决方案是将这些值封装在一起。人们使用过 a 或 a 或泛型,但实际上,你自己的类型是最好的。xyPointObject[]List<Object>Pair<T1,T2>
对于这个问题,我建议使用如下所示的不可变类型来封装和搜索结果:SearchResultbooleanString
public class SearchResult {
   public final String name;
   public final boolean isFound;
   public SearchResult(String name, boolean isFound) {
      this.name = name;
      this.isFound = isFound;
   }
}
然后在搜索功能中,执行以下操作:
private SearchResult checkAddress(String address) {
  // on address search succeed
  return new SearchResult(foundName, true);
  :
  // on address search failed
  return new SearchResult(null, false);
}
然后你这样使用它:
SearchResult sr = checkAddress("5556");
if (sr.isFound) {
  String name = sr.name;
  //...
}
如果需要,您可以(并且可能应该)使不可变字段为非,并改用 getter。finalpublicpublic
Java 不支持输出参数。可以使用返回值,也可以将对象作为参数传入并修改对象。