我的方法在<?php
$serverName = "DARSHAN\SQLEXPRESS";
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"trail");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
内占用String[]
。我在单元测试中生成了这个Map
。
map
不幸的是 Map<String, String[]> queryParameters = new HashMap<>();
queryParameters.put("keywords",["keywords"].toArray() )
queryParameters.put("user", ["m"].toArray() )
queryParameters.put("type", ["type"].toArray() )
会生成一个对象数组,因此会引发异常:
toArray()
我想避免将String数组初始化为:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
这有效,但很烦人。另外,我不想更改原始的Spring / Java方法定义:
String[] keywords = ["keywords"];
queryParameters.put("keywords",keywords)
将 public Page<LoggingEvent> findAll(Pageable pageable, Map<String, String[]> parameters) {
输入地图的最简洁方法是什么?
我不喜欢String Arrays
。
答案 0 :(得分:2)
您可以使用元编程来帮助您的脚本:
Map.metaClass.asStringArrayMap = {
delegate.collectEntries { key, value -> [(key): value as String[]] }
}
[keyword:'keywords', user:'m', type:'type'].asStringArrayMap()
答案 1 :(得分:1)
试试这个
def parameters = [
keywords: ["keywords"],
users: ["m"],
type: ["type"]
].collectEntries {[(it.key): it.value as String[]] } as HashMap<String, String[]>
或者您也可以这样做:
def parameters = [
keywords: ["keywords"] as String[],
users: ["m"] as String[],
type: ["type"] as String[]
]
答案 2 :(得分:-1)
您可以按内嵌初始化内联数据
Map<String, String[]> queryParameters = new HashMap<>();
queryParameters.put("keywords",new String[]{"keyword"});
queryParameters.put("user", new String[]{"m"});
queryParameters.put("type", new String[]{"type"});