我是Java的新手,我必须将C/C++代码转换为Java,我遇到了障碍.由于变量传递给方法的方式,它们在方法中的修改并不简单,我不知道什么是最合理的方法.对于伪代码示例感到抱歉,我希望他们能够清楚地解释我在谈论的内容,而不必深入研究不必要的细节.
我需要一些与C相当的东西
ModifyMyString(type1 &t1,type2 &t2);
Run Code Online (Sandbox Code Playgroud)
(返回类型没关系,它可以是无效的)因为我需要函数来修改t1和t2.
我可以通过在Java中声明来轻松修改其中一个变量,比如说t1
type1 modifyMyString(type1 t1, type2 t2);
Run Code Online (Sandbox Code Playgroud)
并将返回的值分配给
t1 = modifyMyString(t1,t2);
Run Code Online (Sandbox Code Playgroud)
但它只是成功的一半,因为t2的新值丢失了.
我可以宣布新课程
class JustToPassTwoVariables {
type1 t1;
type2 t2;
JustToPassTwoVariables(type1 tt1, type2 tt2) { t1 = tt1; t2 = tt2; }
}
Run Code Online (Sandbox Code Playgroud)
并做一些类似的事情
JustToPassTwoVariables jtptv = modifyMyString(JustToPassTwoVariables(t1,t2));
Run Code Online (Sandbox Code Playgroud)
但我觉得它很笨拙,使代码难以理解.
在绝望中我也可以放弃使用modifyMyString方法的想法,并在每个我称之为modifyMyString的地方重复本地代码 - 但它比使用JustToPassTwoVariables类更没意义.
是否有正确的(或至少广泛使用的,被接受的标准,无论如何)策略来编写Java中的这些东西?
java中推荐的方法是(在某些人看来是笨拙的方式)创建一个包含两个字段的类并返回该类的实例.
如果你停下来思考方法实际上做了什么,并且注意正确地命名方法和返回两个值的类,我觉得它不那么笨拙.
简单回答是不.Java中不允许使用此类功能.
正确的方法是传入要修改的对象而不是两个变量.毕竟在几乎所有情况下,这些变量都已经包装在一个对象中,如果它们不是很常见的话.
将函数拆分为两个函数,并为每个变量调用一次,或将变量包装到对象中并将该对象传递给函数.
不要忘记Java允许内部类,这使得这类事情不那么痛苦.