2012-10-23 29 views
2

我有一个类UserFunction,它有两个方法getAudioFunction和getPromptFunction与返回的字符串值返回多个值,我的问题是,我想在一个方法 同时返回值怎么能我能做到这一点从一个方法

UserFunction.java

public class UserFunction{ 

     Map<String,PromptBean> promptObject=new HashMap<String,PromptBean>(); 
     Map<String,AudioBean> audioObject = new HashMap<String,AudioBean>(); 

     XmlReaderPrompt xrpObject=new XmlReaderPrompt(); 
     public String getAudioFunction(String audioTag,String langMode) 
     {  
      Map<String, AudioBean> audioObject=xrpObject.load_audio(langMode);   
      AudioBean audioBean=(AudioBean)audioObject.get(audioTag);   
      String av=StringEscapeUtils.escapeXml(audioBean.getAudio());    
      return av; 
     } 
     public String getPromptFunction(String promptTag,String langMode) 
     {   
      Map<String, PromptBean> promptObject=xrpObject.load(langMode); 
      PromptBean promptBean= (PromptBean)promptObject.get(promptTag);    
      String pv=StringEscapeUtils.escapeXml(promptBean.getPrompt());   
      return pv; 
     } 

    }  
+0

回报定制类对象,而不是字符串 – pmtamal

回答

3

不可能从Java中的方法返回多于一个值。您可以将多个值设置为MapList或创建自定义类并返回该对象。

public Map<String,String> getAudioAndPromptFunction(String audioTag,String langMode) 
     {  
      Map<String,String> map =new HashMap(); 
      ... 
      map.put("audioBean",StringEscapeUtils.escapeXml(audioBean.getAudio())); 
      map.put("promptBean",StringEscapeUtils.escapeXml(promptBean.getPrompt()); 
      return map; 
     } 

或者您可以创建一个自定义bean类。

public class AudioPrompt{ 
    private String audioBean; 
    private String promptBean; 
    ... 
} 

public AudioPrompt getAudioAndPromptFunction(String audioTag,String langMode) 
{  
    AudioPrompt audioPrompt =new AudioPrompt(); 
    ... 
    audioPrompt.set(StringEscapeUtils.escapeXml(audioBean.getAudio())); 
    audioPrompt.set(StringEscapeUtils.escapeXml(promptBean.getPrompt()); 
    return audioPrompt ; 
} 
4

您需要返回一个包含两个值的对象。你可以为此创建一个类。该类可以有两个getter方法来检索值。

1

您需要返回一个包含两个值的对象。这可能是具有两个元件,一个Pair<A,B>类(其保持两个通用值,典型地从一些泛项目实用程序库),或一个特定的方法类如数组:

public class UserFunctionXmlPairing { 
    public final String audioBeanXml; 
    public final String promptBeanXml; 
} 
1

你可以用所有的重视你想成一个单一的对象,并返回:

public class Prompts { 
    private Map<String, Object> prompts = new HashMap<String, Object>(); 

    public void addPrompt(String name, Object prompt) { 
     this.prompts.put(name, prompt); 
    } 

    public Object getPrompt(String name) { 
     this.prompts.get(name); 
    } 
} 

那就更简单了,如果你的AudioBeanPromptBean有公用的超类或接口。

我的选择是在类名中丢失“Bean”。 AudioPromptTextPrompt将是优选的。

1

创建一个包含两个字符串并返回的新类。

class AudioPromptPair { 
    private String audio; 
    private String prompt; 
    public AudioPromptPair(String audio, String prompt) { 
     this.audio = audio; 
     this.prompt = prompt; 
    } 

    // add getters and setters 
}