我有一个类UserFunction,它有两个方法getAudioFunction和getPromptFunction返回String值,我的问题是我想在一个方法中返回两个值 我怎么能这样做
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 :(得分:4)
您需要返回一个包含两个值的对象。您可以为此目的创建一个类。该类可以有两个getter方法来检索值。
答案 1 :(得分:3)
无法从java中的方法返回多个值。您可以将多个值设置为Map
或List
,也可以创建自定义类并返回该对象。
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 ;
}
答案 2 :(得分:1)
您需要返回包含两个值的对象。这可以是一个包含两个元素的数组,Pair<A,B>
类(包含两个通用值,通常来自某个泛项目实用程序库),或特定于方法的类,如:
public class UserFunctionXmlPairing {
public final String audioBeanXml;
public final String promptBeanXml;
}
答案 3 :(得分: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);
}
}
如果AudioBean
和PromptBean
有一个共同的超类或界面,那就更容易了。
我的偏好是在你的班级名字中丢失“Bean”。 <{1}}和AudioPrompt
将是首选。
答案 4 :(得分: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
}