有人可以给我一些在函数中使用输出参数的示例代码吗?我试过谷歌它,但只是在功能中找到它.我想在另一个函数中使用此输出值.
我正在开发的代码旨在在Android中运行.
所以,我刚刚开始学习Java,我发现没有"通过引用传递"这样的东西.我正在将一个应用程序从C#移植到Java,原始应用程序有一个"ref"或"out"参数的整数和双精度数.
起初我以为我可以传入"整数"或"双精度",由于这是一个引用类型,因此值将被更改.但后来我了解到那些引用类型是不可变的.
那么,我创建了一个"MutableInteger"类和一个"MutableDouble"类,并将它们传递给了我的函数.它有效,但我想我必须违背该语言的原始设计意图.
一般糟糕的设计是"通过参考"吗?我该如何改变自己的思维方式?
拥有这样的函数似乎是合理的:
bool MyClass::changeMyAandB(ref int a, ref int b)
{
// perform some computation on a and b here
if (success)
return true;
else return false;
}
Run Code Online (Sandbox Code Playgroud)
这是糟糕的设计吗?
我需要一个非静态实例方法来返回多个值.举个简单的例子起见,让我们说的这些都是boolean success和Object obj-但在一般情况下,有可能是更多,他们可能是彼此无关.可以想到几种不同的方法:
解决方案1
private boolean aMethod(int aParam, Object obj) { ...set obj parameter & return value... }
Run Code Online (Sandbox Code Playgroud)
解决方案2
private Pair<Boolean, Object> aMethod(int aParam) { ...set return pair values... }
Run Code Online (Sandbox Code Playgroud)
解决方案3
private Object obj;
...
private boolean aMethod(int aParam) { ...set obj field & return value... }
Run Code Online (Sandbox Code Playgroud)
解决方案4
private class MethodReturn { // Nested class - could be a separate class instead
boolean success;
Object obj;
// ... Getters and setters omitted for brevity
}
private …Run Code Online (Sandbox Code Playgroud) 假设我在C++中有这个:
void test(int &i, int &j)
{
++i;
++j;
}
Run Code Online (Sandbox Code Playgroud)
在函数内部更改值,然后在外部使用.我怎么能写一个在Java中做同样的代码?我想我可以返回一个封装两个值的类,但这看起来真的很麻烦.
使用第三方API,我观察到以下内容.
而不是使用,
public static string getString(){
return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
它使用类似的东西
public static void getString(String output){
}
Run Code Online (Sandbox Code Playgroud)
我正在分配"输出"字符串.
我很好奇实现这种功能的原因.使用这些输出参数有什么好处?