2011-12-19 23 views
56

Duplicar posible:
How to return multiple objects from a Java method?¿Cómo devolver valores múltiples?

¿Es posible volver dos o más valores de un método para principal en Java? Si es así, ¿cómo es posible y, si no, cómo podemos hacerlo?

+2

Devuelva la matriz, lista, conjunto, mapa o su objeto personalizado que contiene valores múltiples. He visto la misma pregunta en alguna parte ... déjame encontrar eso. Hay varias preguntas sobre este tema: http://stackoverflow.com/search?q=return+multiple+values+in+java%3F –

Respuesta

53

Puede devolver un objeto de una clase en Java.

Si devuelve más de 1 valor relacionado, entonces tiene sentido encapsularlos en una clase y luego devolver un objeto de esa clase.

Si desea devolver valores no relacionados, puede utilizar las clases de contenedor integradas de Java como Mapa, Lista, Conjunto, etc. Consulte el JavaDoc del paquete java.util para obtener más detalles.

+0

Agregaría un punto más a esto: mantenga inmutable su objeto devuelto (mejor inicialícelo) en un constructor y mantenga sus campos en el final) – Kris

+1

Puede devolver un objeto, pero si tiene tantos objetos devueltos en su programa, complica el código fuente. para cosas que son devueltas de un método una vez-de-su-tipo-es-el-programa, es mejor tener Tuples. como C#. querida C# es un gran lenguaje – docesam

+1

Supongo que debería haber un parámetro C# 'out' o' ref' equivalente en Java, de lo contrario necesitaré crear una clase incluso para devolver dos variables y para que cada función devuelva varios valores. Si seguimos esto, habrá una clase para cada función que devuelva múltiples valores. Aunque el uso de 'Map' se siente mejor ahora. – Mahesha999

26

Solo puede devolver un valor, pero puede ser un objeto que tenga varios campos, es decir, un "objeto de valor". Por ejemplo

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

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

Usted puede hacer algo como esto:

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

Sí se puede recuperar el valor múltiple, pero que debería combinar el valor dentro de los ArrayLists. Le mostraré el ejemplo y eche un vistazo al código:

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

¡demasiado complicado! –

Cuestiones relacionadas