2011-12-19 119 views
56

可能重複:
How to return multiple objects from a Java method?如何返回多個值?

是否有可能從一個方法在Java中返回兩個或多個值主?如果是這樣,怎麼可能,如果不可以,我們該怎麼辦?

+2

返回數組,列表,集合,映射或包含多個值的自定義對象。我在某處看到過同樣的問題......讓我找到它。有關於這個主題的多個問題:http://stackoverflow.com/search?q=return+multiple+values+in+java%3F – 2011-12-19 06:10:41

回答

53

您可以返回Java中的Class對象。

如果您要返回多個相關的值,則將它們封裝到一個類中然後返回該類的對象是有意義的。

如果你想返回不相關的值,那麼你可以使用java的內置容器類,如Map,List,Set等。查看java.util包的JavaDoc瞭解更多詳細信息。

+0

我會再增加一點 - 保持你的返回對象不可變(最好初始化它在一個構造函數中並保持最後的字段) – Kris 2011-12-19 13:35:55

+1

您可以返回一個對象,但是如果程序中有這麼多的返回對象,它會使源代碼變得複雜。對於從一種方法中返回的東西,它的程序更適合擁有元組。像c#一樣。親愛的c#它是一個偉大的語言 – docesam 2015-08-22 22:41:41

+1

我想應該有C#'out'或'ref'參數等價於Java,否則我將需要創建類,即使返回兩個變量和每個函數返回多個值。如果我們遵循這一點,那麼每個函數都會返回一個返回多個值的類。儘管使用'Map'現在感覺更好。 – Mahesha999 2015-09-18 08:52:18

26

您只能返回一個值,但它可以是具有多個字段的對象 - 即「值對象」。例如

public class MyResult { 
    int returnCode; 
    String errorMessage; 
    // etc 
} 

public MyResult someMethod() { 
    // impl here 
} 
26

你可以做這樣的事情:

public class Example 
{ 
    public String name; 
    public String location; 

    public String[] getExample() 
    { 
     String ar[] = new String[2]; 
     ar[0]= name; 
     ar[1] = location; 
     return ar; //returning two values at once 
    } 
} 
-4

是的,你可以檢索多個值,但你應該在的ArrayList中組合的價值。我會告訴你這個例子,並看看代碼:

class mahasiswa{ 
    public String nama; 
    public String nrp; 
    public String sks; 
    public String namakul; 

    public mahasiswa(String nm, String ps, String sk, String nmkul){ 
     this.nama = nm; 
     this.nrp =ps; 
     this.sks = sk; 
     this.namakul = nmkul; 
    } 

    public String getsks(){ 
     return sks; 
    } 

    public String getnamakul(){ 
     return namakul; 
    } 

    public String getnama(){ 
     return nama; 
    } 

    public String getnrp(){ 
     return nrp; 
    } 
} 

ArrayList<mahasiswa> myObject; 

public myArray() { 
    initComponents(); 
    myObject = new ArrayList<mahasiswa>(); 

    for(int i =0;i<myObject.size();i++){ 
     jTextArea1.append("Nama" + " = " + myObject.get(i).getnama() + "\n" + "NRP " + " = " + myObject.get(i).getnrp() + "\n" + "Nama Matakuliah = " + myObject.get(i).getnamakul() + "\n" + "SKS = " + myObject.get(i).getsks() + "\n"); 
    }   
} 
+0

過於複雜! – 2018-02-05 06:55:39