java – 有没有更好的方法来处理将多个参数传递给方法
发布时间:2020-12-15 05:06:00 所属栏目:Java 来源:网络整理
导读:我发现自己做了很多事情: /** * Redirect to a MVC controlleraction * @param controller * @param action */public void redirect(String controller,String action) { redirect(controller,action,new HashMapString,String());}/** * Redirect to a MVC
我发现自己做了很多事情:
/** * Redirect to a MVC controller&action * @param controller * @param action */ public void redirect(String controller,String action) { redirect(controller,action,new HashMap<String,String>()); } /** * Redirect to a MVC controller&action with extra URL parameters * @param controller * @param action * @param data */ public void redirect(String controller,String action,Map<String,String> data) { String urlParameters = ""; for(String key : data.keySet()) { urlParameters += "&" + key + "=" + data.get(key); } m_binder.putLocal("RedirectParams","IdcService=MVC_FRONTCONTROLLER&controller="+controller+"&action="+action + urlParameters); } 要调用第二种方法,我实际上需要创建一个hashmap来在其中添加数据,我想知道是否有更方便的方法来实现这一点? 正如您所看到的,我需要知道密钥和值,因此varargs不起作用(据我所见). 我对所有想法持开放态度,包括使用反思. 解决方法
我曾经为构建地图编写了这种方便的方法.它需要varargs并成对地制作一张地图.要在测试代码中创建简单的地图,这非常方便.您需要确保获得正确的参数数量,但我喜欢它,因为它使代码量变小.
@SuppressWarnings("unchecked") public static <K,V> Map<K,V> mapOf(K key,V value,Object... morePairs) { Map<K,V> map = new HashMap<K,V>(); map.put(key,value); for (int i=0; i<morePairs.length; i+=2) { map.put((K)morePairs[i],(V)morePairs[i+1]); } return map; } 然后你可以使用以下方法创建地图: Map<String,String> map = mapOf("One","1","Two","2"); 然而,这不是每个人的一杯茶(因为缺乏类型安全性),所以你可以改变实施来成对: Map<String,String> map = mapOf(pair("One","1"),pair("Two","2")); 将pair定义为静态方法,创建包含两个值的简单对象,然后将mapOf转换为Map中的Entries. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |