2011-12-19 12 views
56

Powiel możliwe:
How to return multiple objects from a Java method?Jak zwrócić wiele wartości?

Czy to możliwe, aby powrócić dwa lub więcej wartości z metody main w Java? Jeśli tak, jak to możliwe, a jeśli nie, jak możemy to zrobić?

+2

Powróć do tablicy, listy, zestawu, mapy lub niestandardowego obiektu zawierającego wiele wartości. Widziałem gdzieś to samo pytanie .... pozwól mi to znaleźć. Istnieje wiele pytań na ten temat: http://stackoverflow.com/search?q=return+multiple+values+in+java%3F –

Odpowiedz

53

Możesz zwrócić obiekt klasy w Javie.

Jeśli zwracasz więcej niż jedną wartość, które są powiązane, to sens enkapsulacji ich do klasy, a następnie zwracania obiektu tego klas.

Jeśli chcesz zwrócić niepowiązane wartości, możesz użyć wbudowanych klas kontenera java, takich jak mapa, lista, zestaw itp. Sprawdź pakiet JavaDoc pakietu java.util, aby uzyskać więcej informacji.

+0

Dodałbym jeszcze jeden punkt do tego - utrzymuj zwracany obiekt niezmienny (najlepiej go zainicjalizuj w konstruktorze i utrzymuj swoje pola końcowe) – Kris

+1

Możesz zwrócić obiekt, ale jeśli masz tyle obiektów powrotu w swoim programie, powoduje to, że kod źródłowy jest skomplikowany. dla rzeczy, które są zwracane z metody raz w swoim rodzaju, lepiej mieć krotki. jak C#. kochanie C# to świetny język – docesam

+1

Domyślam się, że powinien istnieć odpowiednik parametru C# 'out' lub' ref' w Javie, inaczej będę musiał stworzyć klasę nawet dla zwracania dwóch zmiennych i dla każdej funkcji zwracającej wiele wartości. Jeśli to zrobimy, będzie klasa dla każdej funkcji zwracającej wiele wartości. Chociaż używanie 'Map' jest teraz lepsze. – Mahesha999

26

Można zwrócić tylko jedną wartość, ale może to być obiekt, który ma wiele pól - tj. "Obiekt wartości". Np

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

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

można zrobić coś takiego:

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

Tak można pobrać wiele wartości, ale należy połączyć wartość ciągu ArrayLists. Pokażę ci przykład i przyjrzyj się kodowi:

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

jest zbyt skomplikowana! –

Powiązane problemy