[英]What type to return?
考慮一種產生不同類型結果的方法。 就我而言,它可以是ArrayList或Integer(偽代碼):
int a = ... // value for a comes from another function
public ArrayList compute(){ // return either ArrayList or Integer
if(a==1){
ArrayList result = new Arraylist()
for(int i=0; i<=something; i++){
arr.add(...);
}
}
if(a==2){
int result;
result = somethingElse;
}
return result;
}
根據a
的結果, result
或者來自循環,然后將結果加載到ArrayList中,或者在第二種情況下,它只是一個數字。
該方法應返回哪種類型?
返回一個List<Integer>
。 對於單個整數,只需返回包含單個元素的列表即可。
除了返回列表(但在功能上相同)之外,
public void compute(List<Integer> result){
// add/remove/set the given list,
}
盡管總體上看似是一個糟糕的設計,但在這種情況下,您實際上可能返回一個值,該值指示是否返回“列表”或單個值(包含一個元素的列表)。
public boolean compute(List<Integer> result){ ...
或者,更好的是,列表的長度(取決於您真正要實現的目標):
public int compute(List<Integer> result){
...
return result.size();
}
您可以將方法的簽名更改為public Object compute()
,以便可以返回ArrayList
和Integer
,但是我不確定為什么要這樣做。
這僅意味着,無論何時調用compute()
,都需要檢查收到的Object
的類型,例如
Object result = compute();
if(result instanceof ArrayList) {
// Do ArrayList stuff
} elseif(result instanceof Integer) {
// Do Integer stuff
}
注意: Object
是Java中所有對象的超類,因此如果有一段時間您可能想返回很多不同的東西,則可以使用Object
。 但是更好的解決方案可能是創建一個接口,如果您要返回的東西有一些共同點。
參見此處: http : //docs.oracle.com/javase/tutorial/java/concepts/interface.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.