如何在Java中使用输出参数?
有人可以给我一些在函数中使用输出参数的示例代码吗?我尝试过使用Google,但只是在功能中发现了它。我想在另一个函数中使用此输出值。
我正在开发的代码打算在Android中运行。
回答:
Java通过值传递;没有out
像C#这样的参数。
您可以使用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;
}
请改用String
返回类型,null
以表示失败。
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
String(也许是一个空字符串!),直到返回null
以指示“搜索”结束。
当然,这不限于引用类型的返回值。关键是必须有一些永远都不是有效值的特殊值,并且您可以将该值用于特殊目的。
另一个经典示例是String.indexOf
:它返回-1
以指示搜索失败。
注意 :由于Java没有“输入”和“输出”参数的概念,因此不需要使用
i-
ando-
前缀(例如)。iAddress``oPerson
更一般的解决方案
如果您需要返回多个值,通常它们是以某种方式关联的(例如x
和y
单个的坐标Point
)。最好的解决方案是将这些值封装在一起。人们使用Object[]
或List<Object>
或通用Pair<T1,T2>
,但实际上,最好使用您自己的类型。
对于此问题,我建议使用这样的不可变SearchResult
类型来封装boolean
和String
搜索结果:
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;
//...
}
如果需要,可以(可能应该)将final
不可变字段设置为non- public
,而改用public
getter。
以上是 如何在Java中使用输出参数? 的全部内容, 来源链接: utcz.com/qa/419254.html