gpt4 book ai didi

java - 函数中的不同参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:26 29 4
gpt4 key购买 nike

例如,我有一个类 X,它有 2 个名为 ex 的字段。 a字段和b字段。在主类中,我得到了对象类 X 的表以及应该多次调用的函数,但第一次必须更改名为 aField 的字段,第二次调用时必须更改名为 bField 的字段。

class X{
int aField;
int bField;
}
class Main{
public X[] listX;
public int amount;
public static void requestedFunction(){
for(int i=0; i<amount; i++){
aField = 5;
// bField = 5;
// or this one when called second time in code ;
}

}
public static void main(String[] args) {
amount = 10;
listX= new X[amount];

requestedFunction(); // thsi usage change fields named aFields
requestedFunction(); // this usage change fields named bFields
}
}

有什么办法可以解决这个问题吗?或者我需要制作两个不同的功能?

最佳答案

从技术上讲,你可以通过以下方式实现这一点

enum ExecutionType {
ATYPE,
BTYPE
}

public static void requestedFunction(ExecutionType eType){
for(int i=0; i<amount; i++){
if (eType==ExecutionType.ATYPE)
aField = 5;
else if (eType ==ExecutionType.BTYPE)
bField = 5;
}
}

requestedFunction(ExecutionType.ATYPE);
requestedFunction(ExecutionType.BTYPE);

但是,实现此目的的正确方法是使用两个单独的函数。这种设计不太好,对于更复杂的场景有可能引起严重的头痛。

不使用参数的版本也是可能的,但违背了越来越多的面向对象原则。每次调用时都会执行不同操作的函数的行为将很难理解。

关于java - 函数中的不同参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319905/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com