簡體   English   中英

返回什么類型?

[英]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() ,以便可以返回ArrayListInteger ,但是我不確定為什么要這樣做。

這僅意味着,無論何時調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM