加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读