具有与Java中方法的返回类型和输入参数相同的对象
我有一个主要的输入对象o1,它由对象o2组成。 对象o2由对象o3组成。 对象o3由对象o4组成具有与Java中方法的返回类型和输入参数相同的对象,java,Java,我有一个主要的输入对象o1,它由对象o2组成。 对象o2由对象o3组成。 对象o3由对象o4组成 这里我在参数中传递相同的输出对象,并将其作为返回类型。它能被更好地编码吗 输入inputObj使其成为类成员,因此您的方法只有parOutput作为参数。一个选项是编写实用程序/帮助程序函数,如下所示: public static void prepareOutput (Output[] parOutput, Input inputObj) { int arraySize = parO
这里我在参数中传递相同的输出对象,并将其作为返回类型。它能被更好地编码吗 输入inputObj使其成为类成员,因此您的方法只有parOutput作为参数。一个选项是编写实用程序/帮助程序函数,如下所示:
public static void prepareOutput (Output[] parOutput, Input inputObj)
{
int arraySize = parOutput.length;
Output[] output = new Output[arraySize];
for(int i=0; i<arraySize; i++)
{
if(parOutput != null && parOutput[i].getSubscriptionsX7() != null)
{
output[i] = new Output();
output[i] = setLevel1OutputObj(parOutput[i],inputObj, output[i]);
output[i] = setLevel2OutputObj(parOutput[i],inputObj, output[i]);
output[i] = setLevel3OutputObj(parOutput[i],inputObj, output[i]);
output[i] = setLevel4OutputObj(parOutput[i],inputObj, output[i]);
}
}
inputObj.setSubscriberInfoOutput(output);
}
…然后在调用代码中实现循环体,如:
public static Output configuredOutput(Output source, Input input) {
if (source.getSubscriptionsX7() == null) {
return null;
}
Output result = new Output();
result = setLevel1OutputObj(source, input, result);
result = setLevel2OutputObj(source, input, result);
result = setLevel3OutputObj(source, input, result);
result = setLevel4OutputObj(source, input, result);
return result;
}
另一个选择,我想你实际上是在问,是实施。为此,您必须将setLevelXOutputObj函数重构为输出类上的实例方法
如果您这样做了,那么您就可以用如下内容重写您的循环体:
if(parOutput != null && parOutput[i].getSubscriptionsX7() != null) {
output[i] = configuredOutput(parOutput[i],inputObj);
}
您总是将正在使用的对象作为最终参数传递给静态函数,这一事实很好地表明静态函数更适合作为实例方法实现
请注意,正如pbabcdefp所述,您可能还希望查看您的parOutput!=空检查。您没有将它放在合理的位置,因为如果parOutput实际为null,您当前的代码将抛出NullPointerException。描述您试图解决的问题。我不理解这个问题,但我可以看到parOutput是否为空!=null在错误的位置。这里也是。你问问题的方式对我来说毫无意义。在o1对象由o2对象组成的情况下,您试图说明什么?并且您的方法没有返回类型。其返回类型为void。你能试着问清楚一点吗?setLevelXOutputObj对我来说也没有意义。我不会叫它global@AdrianShum在方法的上下文中是全局的,在方法的外部,我也说过类成员,我认为它也容易被理解。我同意@AdrianShum。全局和类成员不是一回事。Java甚至没有真正的全局变量,最接近的是publicstatic,希望是final,它仍然不同于类成员变量。
Output source = parOutput[i];
output[i] = new Output().setLevel1OutputObj(source, inputObj)
.setLevel2OutputObj(source, inputObj)
.setLevel3OutputObj(source, inputObj)
.setLevel4OutputObj(source, inputObj);