[英]having the same object as return type and input argument for a method in Java
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);
}
我有主要的輸入object o1
,它由object o2
組成。 Object o2
由object o3
組成。 Object o3
由object o4
組成。
在這里,我在參數中傳遞了相同的輸出對象,並將其作為返回類型。 可以更好地編碼嗎?
輸入inputObj
使其成為類成員,因此您的方法僅將parOutput
作為參數。
一種選擇是編寫一個實用程序/輔助函數,如下所示:
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;
}
...然后在調用代碼中實現您的循環體,例如:
if(parOutput != null && parOutput[i].getSubscriptionsX7() != null) {
output[i] = configuredOutput(parOutput[i],inputObj);
}
我認為您真正要問的另一種選擇是實現方法鏈接 。 為此,您必須將setLevelXOutputObj
函數重構為Output
類上的實例方法。
如果這樣做,則可以使用類似以下的代碼重寫循環體:
Output source = parOutput[i];
output[i] = new Output().setLevel1OutputObj(source, inputObj)
.setLevel2OutputObj(source, inputObj)
.setLevel3OutputObj(source, inputObj)
.setLevel4OutputObj(source, inputObj);
您始終將要使用的Object
作為最終參數傳遞給靜態函數的事實很好地表明,您的靜態函數將更適合作為實例方法實現。
請注意,如pbabcdefp所述,您可能還希望查看parOutput != null
檢查。 您實際上並沒有把它放在一個合理的位置,因為如果parOutput
實際上是null
,那么您當前的代碼將拋出NullPointerException
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.