如何在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-and o-前缀(例如)。iAddress``oPerson


更一般的解决方案

如果您需要返回多个值,通常它们是以某种方式关联的(例如xy单个的坐标Point)。最好的解决方案是将这些值封装在一起。人们使用Object[]List<Object>或通用Pair<T1,T2>,但实际上,最好使用您自己的类型。

对于此问题,我建议使用这样的不可变SearchResult类型来封装booleanString搜索结果:

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,而改用publicgetter。

以上是 如何在Java中使用输出参数? 的全部内容, 来源链接: utcz.com/qa/419254.html

回到顶部