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