什么是Java 6接口MultivaluedMap?
发布于 2014-03-11 12:23:47
接口不属于"Java",这意味着接口不是核心库的一部分。它是javax.ws.rs层次结构的一部分,是贾克斯-RS规范的一部分。它由实现规范的框架(如泽西岛 )使用。每当映射不仅引用单个值,而且引用任意数量的值时,都会使用它。例如,使用的一个示例是请求头的存储,您可能希望在其中每个键添加几个值。甚至没有键,在某些情况下,与null值相比,处理空列表更容易。
以这个HTTP头为例:
接受-编码: compress;q=0.5,gzip;q=1.0
你可以通过
MultivaluedMap<String, String> map = ...
map.add("Accept-Encoding", "compress;q=0.5");
map.add("Accept-Encoding", "gzip;q=1.0");在泽西内部。这种类型的多值存储是Java中的一个常见问题,由其他映射实现者(如番石榴 )来解决。
这基本上就是javadoc的意思:
键值对的映射。每个键可以有零或更多的值。
发布于 2014-03-11 11:19:25
它是键值对的映射。每个键可以有零或多个值。
public interface MultivaluedMap<K,V> extends java.util.Map<K,java.util.List<V>>发布于 2014-07-22 18:35:13
MultivaluedMap的一个很好的使用是与UriInfo。如果要编写一个包含多个QueryParams的REST端点,可以使用UriInfo获取所有参数并使用getQuery()调用提取它们。例如:
public void get(@Context UriInfo ui) {
MultivaluedMap params = ui.getRequestUri().getQuery();
// now do what you want with your params
}MultivaluedMap很有用,因为您可以有多个值的参数。例如,如果它是一个客户数据库,并且您希望获得多个客户,则您的地图将具有"customerID“键以及与其链接的多个值。
https://stackoverflow.com/questions/22324091
复制相似问题