从一个方法返回多个值

时间:2012-10-23 11:35:46

标签: java

我有一个类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;
        }

    }       

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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 ;
}

答案 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);
    }
}

如果AudioBeanPromptBean有一个共同的超类或界面,那就更容易了。

我的偏好是在你的班级名字中丢失“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
}