2016-12-25 79 views
0

我能夠使用控制檯輸出獲取輸出,如下所示。如何從java中的POJO類返回多個東西

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

這是兩個布爾和哈希表,我想這樣,每當我打的服務它就會在瀏覽器中顯示,以回報他們。 如果我使用return語句,那麼我只能返回一個東西 我該如何返回這個組合?請用全班或例子解釋。

我用新的POJO來獲取返回的值,但我對此非常困惑。

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(); 

    }} 

這是服務

@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();}} 

我想知道如何這三個輸出組合。

+0

我不明白你的問題,你想從同一個方法返回多個東西? – developer

+0

是,一次輸出三個 –

+0

收集setResponse的返回值並將其作爲實體添加到您的響應中。但一定要做一個hm的深層副本,而不是僅僅是一個引用,或清除它將反映在你的響應對象。 – Fildor

回答

0

java沒有'元組類型',你可以返回多個東西。

2思路:

  • 返回一類/充當「複合」
  • 傳遞類/陣列,並且從這個參數

代碼可能是返回它的陣列例如

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

請注意,數組的方式是unsexy作爲地獄... id DEFINITLY去提案一! –

+0

什麼是響應構建器的邏輯(好)。 ..像這樣的東西,我們如何使用它的多重響應? –

+0

當然。你也可以使用一個builder模式:'return ResponseBuilder.setX(x).setY(y).setZ(z);' –