2016-12-25 2 views
0

Ich bin in der Lage, Ausgabe über die Konsolenausgabe wie folgt.Wie mehrere Dinge aus POJO-Klasse in Java zurückgegeben werden

true 
false 
{2=s, 3=h ,..} 

das sind zwei Boolesche und eine Hash-Map will ich sie zurück, so dass, wenn ich den Dienst traf es auf Browser angezeigt wird. Wenn ich Return-Anweisung verwenden, dann kann ich nur eine Sache zurückgeben Wie kann ich diese Kombination zurückgeben? Bitte erläutern Sie mit voller Klasse oder Beispiel.

Ich benutzte neue POJO, um den zurückgegebenen Wert zu erhalten, aber ich bin so viel verwirrt auf diese.

package com.vishal; 

import java.util.HashMap; 

import javax.ws.rs.core.Response; 

public class DiffResponse { 

    private boolean l = false; 
    private boolean c = false; 

    public HashMap<Integer, String> hm = new HashMap<Integer, String>(); 

    public DiffResponse setResponse(boolean l, boolean c, 
     HashMap<Integer, String> hm) { 
     this.l = l; 
     this.c = c; 
     this.hm = hm; 

     return new DiffResponse(); 

    }} 

Das ist Service

@POST 
@Path("/compare/id") 

public void delt`enter code here`a() { 

    String s1 = al.get(0); 
    String s2 = al.get(1); 

    String s = null; 
    boolean l = false; 
    boolean c = false; 

    if (s1.length() == s2.length()) 
     l = true; 
    al.clear(); 
    if (s1.equals(s2)) 
     c = true; 
    al.clear(); 

    DiffResponse DF = new DiffResponse(); 

    char[] c1 = s1.toCharArray(); 
    char[] c2 = s2.toCharArray(); 
    int minLength = Math.min(c1.length, c2.length); 

    for (int i = 0; i < minLength; i++) { 

     if (c1[i] == c2[i]) { 
      continue; 
     } else { 

      s = Character.toString(c2[i]); DF.hm.put(i, s); 

     } 

    } 
    al.clear(); 
    System.out.println(l); 
    System.out.println(c); 
    System.out.println(DF.hm); 
    DF.setResponse(l, c, DF.hm); //this output to be displayed using return 
    DF.hm.clear();}} 

Ich möchte wissen, wie diese drei Ausgänge zu kombinieren.

+0

Ich habe Ihre Frage nicht verstanden, möchten Sie mehrere Dinge aus der gleichen Methode zurückgeben? – developer

+0

Ja, drei Ausgänge gleichzeitig –

+0

Erfassen Sie den Rückgabewert von setResponse und fügen Sie ihn als Entity zu Ihrer Antwort hinzu. Aber stellen Sie sicher, dass Sie eine tiefe Kopie von hm machen, anstatt nur eine Referenz oder die Löschung, die sich in Ihrem Antwortobjekt widerspiegelt. – Fildor

Antwort

0

Java hat keinen 'Tupeltyp', wo Sie mehrere Dinge zurückgeben können.

2 Ideen:

  • return eine Klasse/ein Array, das als ein 'zusammengesetzt' wirkt
  • eine Klasse/ein Array übergeben und sendet es über diesen Parameter

Code sein könnte, z.B

pubic MyReturnValue foo() { 
    ... 
    return new MyReturnValue(x,y,z) 
} 

pubic Object[] foo() { 
    ... 
    return new Object[] {x,y,z} 
} 

pubic void foo(MyReturnValue valueToSet) { 
    ... 
    valueToSet.setXYZ(x,y,z) 
} 

pubic void foo(Object[] valueToSet) { 
    ... 
    valueToSet.[0] = x; 
    valueToSet.[1] = y; 
    valueToSet.[2] = z; 
} 
+0

beachten Sie, dass die Array-Weg ist unsexy als Hölle ... ID DEFINITLY gehen mit Vorschlag eins! –

+0

Was ist die Logik der Antwort Builder (ok). .. so etwas wie, wie verwenden wir das für mehrere Antworten? –

+0

sicher. Sie können auch ein Builder-Muster verwenden: 'return ResponseBuilder.setX (x) .setY (y) .setZ (z);' –

Verwandte Themen