调用应该修改多个变量的方法时的最佳策略

Bor*_*rek 4 java variables

我是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中的这些东西?

Buh*_*uhb 7

java中推荐的方法是(在某些人看来是笨拙的方式)创建一个包含两个字段的类并返回该类的实例.

如果你停下来思考方法实际上做了什么,并且注意正确地命名方法和返回两个值的类,我觉得它不那么笨拙.


Tim*_*m B 5

简单回答是不.Java中不允许使用此类功能.

正确的方法是传入要修改的对象而不是两个变量.毕竟在几乎所有情况下,这些变量都已经包装在一个对象中,如果它们不是很常见的话.

将函数拆分为两个函数,并为每个变量调用一次,或将变量包装到对象中并将该对象传递给函数.

不要忘记Java允许内部类,这使得这类事情不那么痛苦.