2011-01-21 34 views
6

Java'daki bir işlevden birden fazla değer nasıl geri dönülür? Herkes bunu tuples kullanarak yapmak için örnek kod verebilir mi? Tuples kavramını anlayamıyorum.Java'daki bir işlevden daha fazla bir değer döndürün


public class Tuple{ 
    public static void main(String []args){ 
     System.out.println(f()); 
    } 
    static Pair<String,Integer> f(){ 
     return new Pair<String,Integer>("hi",3); 
    } 
    public class Pair<String,Integer> { 
     public final String a; 
     public final Integer b; 

     public Pair(String a, Integer b) { 
      this.a = a; 
      this.b = b; 
     } 
    } 
} 

yukarıdaki kodda hata nedir?

+2

Java'ın tuplleri yok. Onlardan hoşlanıyorsanız, Scala'ya geçin. –

+0

[Java yönteminden birden çok nesneyi nasıl iade edebilirim?] Olası bir kopyası var mı? (Http://stackoverflow.com/questions/457629/how-to-return-multiple-objects-from-a-java-method) –

+0

Bunun için HashMap kullanın. İstediğinizi yazabilir, seçim isimlerinize göre yazabilirsiniz. bir toplu iş gibi – kommradHomer

cevap

1

Birden fazla değer döndüremezsiniz.

Amacınızı karşılarsa, Dizi, Koleksiyon'u döndürebilirsiniz.

Not: Nesnenin [dizisi, koleksiyon] referansı bir değer, referans olur.

4

İhtiyacınız olan birden çok değeri barındıran bir sınıf oluşturun. Yönteminizde, bu sınıfın bir örneğini içeren bir nesne döndürün. İşte bu kadar!

Bu şekilde, hala tek nesnesini döndürüyorsunuz. Java'da, ne olursa olsun, bir nesnesinden daha fazla döndüremezsiniz.

+1

Tam olarak bir _reference_ bir nesneyi döndürür. –

1

bir Java fonksiyonu bir dizi döndürebilir: Eğer (piton değil) Java birden fazla değer döndüremez

public static int[] ret() { 
     int[] foo = {1,2,3,4}; 
     return foo; 
    } 
+0

Yine de sadece bir nesne (veya ona referans ...). Cevap 'hayır', ancak bir dizi, koleksiyon veya çoklu nesneleri kapsülleyen özel bir nesne döndürebilirsiniz. –

1

. Sadece dizi veya liste ya da benzeri herhangi bir nesne döndürerek bir yöntem yazmak

2

Bu, aradığınız nedir?

public class Tuple { 
    public static void main(String[] args) { 
     System.out.println(f().a); 
     System.out.println(f().b); 
    } 

    static Pair<String, Integer> f() { 
     Tuple t = new Tuple(); 
     return t.new Pair<String, Integer>("hi", 3); 

    } 

    public class Pair<String, Integer> { 
     public final String a; 
     public final Integer b; 

     public Pair(String a, Integer b) { 
      this.a = a; 
      this.b = b; 
     } 
    } 
} 
0

Geri dönüşünüz, durumunuz gibi farklı veri türlerinden oluşuyorsa ne olur? Ya da örneğin, bir Dize adı ve bir tamsayı yaşı döndürdüğünüzü söyleriz. Sen org.json kütüphanesinden JSON yapabilirsin.

//objectInstanceName is the name of the instantiated class 
JSONObject jso = objectInstanceName.info(); 
String name = jso.getString("name"); 
int age = jso.getInt("age"); 
System.out.println(name + " is "+ age + " years old"); 

//Output will be like 
Emil is 25 years old 

bunu denemek Umut: Eğer programda bir yere verileri almak istiyorsanız, Daha sonra http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm

public JSONObject info(){ 
    String name = "Emil"; 
    int age = 25; 
    String jsonString ="{\"name\":\""+ name+"\",\"age\":"+ age +"}"; 
    JSONObject json = new JSONObject(jsonString); 
    return json ; 
} 

de kavanoz alabilirsiniz, yapman şeydir. Ya da sen yapmazsan java'da java hakkında daha fazlasını okuyabilirsin.

İlgili konular