Java – is there a better way to handle passing multiple parameters to methods

I found myself doing a lot of things:

/**
 * 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);
}

To invoke the second method, I actually need to create a HashMap to add data to it. I wonder if there is a more convenient way to do this?

As you can see, I need to know the key and value, so varargs doesn't work (as far as I can see)

I am open to all ideas, including the use of reflection

Solution

I have written this convenient method for building maps It needs varargs and makes a map in pairs It is very convenient to create a simple map in the test code You need to make sure you get the right number of arguments, but I like it because it makes the code smaller

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

You can then create a map using the following methods:

Map<String,String> map = mapOf("One","1","Two","2");

However, this is not everyone's cup of tea (due to the lack of type safety), so you can change the implementation to pair:

Map<String,String> map = mapOf(pair("One","1"),pair("Two","2"));

Define pair as a static method, create a simple object with two values, and then convert mapof to entries in the map

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>