2016-12-25 77 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);' –