2

我有一个类 UserFunction,它有两个方法 getAudioFunction 和 getPromptFunction 并返回 String 值,我的问题是我想在一个方法中返回这两个值我怎么能做到这一点

用户函数.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;
        }

    }       
4

5 回答 5

4

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

于 2012-10-23T11:37:45.443 回答
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 ;
}
于 2012-10-23T11:36:46.577 回答
1

您需要返回一个包含这两个值的对象。这可以是一个包含两个元素的数组、一个Pair<A,B>类(它包含两个通用值,通常来自一些泛项目实用程序库),或者一个特定于方法的类,例如:

public class UserFunctionXmlPairing {
    public final String audioBeanXml;
    public final String promptBeanXml;
}
于 2012-10-23T11:37:58.727 回答
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”。 AudioPrompt并且TextPrompt会是首选。

于 2012-10-23T11:38:51.113 回答
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
}
于 2012-10-23T11:39:35.483 回答