2

私はクラスUserFunctionを持っていて、文字列値を返す2つのメソッドgetAudioFunctionとgetPromptFunctionを持っています。私の問題は、1つのメソッドで両方の値を返したいということです。

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;
        }

    }       
4

5 に答える 5

4

両方の値を保持するオブジェクトを返す必要があります。この目的のためにクラスを作成することができます。クラスには、値を取得するための2つの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

両方の値を含むオブジェクトを返す必要があります。これは、2つの要素を持つ配列、Pair<A,B>クラス(通常、いくつかの汎プロジェクトユーティリティライブラリからの2つの汎用値を保持する)、または次のようなメソッド固有のクラスである可能性があります。

public class UserFunctionXmlPairing {
    public final String audioBeanXml;
    public final String promptBeanXml;
}
于 2012-10-23T11:37:58.727 に答える