web-dev-qa-db-fra.com

Renvoyer plusieurs valeurs en Java

J'ai écrit une fonction en Java et je veux que cette fonction renvoie plusieurs valeurs. Sauf utilisation de tableau et de structure, existe-t-il un moyen de renvoyer plusieurs valeurs?

Mon code: 

String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x;
Cursor c = db.rawQuery(query, null);
if (c!= null && c.moveToFirst()) 
{
  GoodNameShow = c.getString(0);
  QuantityShow = c.getLong(1);
  GoodUnitPriceShow = c.getLong(2);
  return GoodNameShow,QuantityShow ,GoodUnitPriceShow ;
}
8
shadi

En Java, lorsque vous souhaitez qu'une fonction renvoie plusieurs valeurs, vous devez

  • intégrer ces valeurs dans un objet que vous retournez
  • ou changer un objet qui est passé à votre fonction

Dans votre cas, vous devez clairement définir une classe Show pouvant contenir les champs name, quantity et price:

public class Show {
    private String name;
    private int price;
    // add other fields, constructor and accessors
}

puis changez votre fonction en 

 public  Show  test(){
      ...
      return new Show(GoodNameShow,QuantityShow ,GoodUnitPriceShow) ;
29
Denys Séguret

J'ai développé une approche très basique pour faire face à ce genre de situation.

J'ai utilisé une logique de seperator in Strings.

Par exemple, si vous devez retourner dans la même fonction 1. int value 2. valeur double 3. Valeur de chaîne

vous pouvez utiliser une chaîne de séparation 

Par exemple, ",.," ce type de chaîne n'apparaît généralement pas.

Vous pouvez retourner une chaîne composée de toutes les valeurs séparées par ce séparateur "<valeur int>,., <Double valeur>,., <Valeur chaîne>"

et convertir en types équivalents dans lesquels la fonction a été appelée à l'aide de String.split (separtor) [index]

Référez-vous au code suivant pour une explication - 

séparateur utilisé = ",.,"

public class TestMultipleReturns{

 public static void main(String args[]){

   String result =  getMultipleValues();
   int intval = Integer.parseInt(result.split(",.,")[0]);
   double doubleval = Double.parseDouble(result.split(",.,")[1]);     
    String strval = result.split(",.,")[2];
 }

 public static String getMultipleValues(){

   int intval = 231;//some int value      
   double doubleval = 3.14;//some double val
   String strval = "hello";//some String val

   return(intval+",.,"+doubleval+",.,"+strval);

 }
}

Cette approche peut être utilisée comme raccourci si vous ne souhaitez pas augmenter le nombre de classes uniquement pour les retours de fonction.

Cela dépend de la situation d’une situation à l’autre.

0