所以,我刚开始学习Java,发现没有所谓的“按引用传递”。我正在将一个应用程序从C#移植到Java,原始应用程序具有作为“ref”或“out”参数的int和double。
起初,我认为可以传入“Integer”或“Double”,因为那是引用类型,值会改变。但后来我了解到这些引用类型是不可变的。
于是,我创建了一个“MutableInteger”类和一个“MutableDouble”类,然后将它们传递给我的函数。它能够工作,但我想我可能违背了语言的原始设计意图。
“按引用传递”总体上是不好的设计吗?我应该如何改变我的思考方式?
似乎有一个这样的函数是合理的:
起初,我认为可以传入“Integer”或“Double”,因为那是引用类型,值会改变。但后来我了解到这些引用类型是不可变的。
于是,我创建了一个“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;
}
那是糟糕的设计吗?
return success;
- Austin Salonen