3 回答

TA貢獻1936條經(jīng)驗 獲得超7個贊
我建議用額外的參數(shù)覆蓋該方法,并使用現(xiàn)有的方法來獲取arrayTable,并且只在被覆蓋的方法中做額外的工作(計算行數(shù))。
ArrayTable foo(... args) {} //existing method
Integer foo(... args, fetchRows) {
arrayTable = foo(args);
// do the rest here
}
通過這種方式,您可以降低添加任何回歸的風險,并且您為此必須進行的代碼更改將是最小的。

TA貢獻1810條經(jīng)驗 獲得超4個贊
不,這是不可取的。
您可以創(chuàng)建一個FooResult包含標志的新類,并且可以包含 rowCount 或輸出:
class FooResult {
private boolean outputAvailable;
private Integer rowCount;
private ArrayTable<> output;
public FooResult(Integer rowCount) {
this.outputAvailable = false;
this.rowCount = rowCount;
}
public FooResult(ArrayTable output) {
this.outputAvailable = true;
this.output = output;
}
// getters
}
然后你的foo方法應該有FooResult它的返回類型,并返回如下:
if (/* some condition */) {
return new FooResult(rowCount);
} else {
return new FooResult(output);
}
最后,調(diào)用它的進程應該檢查標志,并根據(jù)標志的值從結果對象中獲取 rowCount 或輸出。
if (result.isOutputAvailable()) {
// do stuff with result.getOutput()
} else {
// do stuff with result.getRowCount()
}
不過,創(chuàng)建兩個單獨的方法可能更簡單。

TA貢獻1826條經(jīng)驗 獲得超6個贊
我會簡單地使用兩種方法,然后重新考慮如何使用這些方法。我會先調(diào)用檢索行數(shù)的方法,然后根據(jù)該方法決定是否調(diào)用第二個。
添加回答
舉報