gpt4 book ai didi

java - 在 Matlab 调用的 java 方法中使用可变参数

转载 作者:行者123 更新时间:2023-11-30 10:57:34 25 4
gpt4 key购买 nike

我用eclipse创建了一个jar文件,在这个文件中有一个类用这个方法

public Response getJsonFromRest(String urlstr, String... queryParams)  

我的目标是返回一个对象,该对象具有基于 urlstr 参数的 Rest 调用的结果。为了创建一个通用方法,我使用了 String...queryParams 所以我可以使用这个方法而不考虑查询参数的数量。当我在 eclipse 中调用此方法时,我可以使用 0,1 或很多查询参数,但是当我从 matlab 调用此方法时,我必须为 getJsonFromRest 设置两个参数,一个用于 urlstr e 一个查询参数。为什么不能在 matlab 中使用可变参数?

这是代码

public Response getJsonFromRest(String urlstr, String... queryParams)  {
URL url;
try {
//check if there are query params.
if (queryParams.length==0)
url = new URL(urlstr);
else
url = new URL(addQueryParam(urlstr, queryParams));

HttpURLConnection conn =
(HttpURLConnection) url.openConnection();

if (conn.getResponseCode() != 200) {
return new Response(conn.getResponseCode(), conn.getResponseMessage());
}

// Buffer the result into a string
BufferedReader rd = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();

conn.disconnect();

return new Response(conn.getResponseCode(), sb.toString());
} catch (IOException e) {
//417 for exception
return new Response(417, e.getMessage());
}

}

private String addQueryParam(String urlstr, String... queryParams){
String symbol="?";
String newUrl=urlstr;
for (String param:queryParams){
newUrl+=symbol+param;
symbol="&";
}
System.out.println(newUrl);
return newUrl;
}

最佳答案

当您创建一个 Java 方法,该方法采用带有省略号 (...) 的 varargs 参数时,例如:

public Response getJsonFromRest(String urlstr, String... queryParams)

Java 实际上生成了一个方法,该方法采用数组作为可变参数,如下所示:

public Response getJsonFromRest(String urlstr, String[] queryParams)

当您使用多个参数从 Java 调用此方法时,会自动为您创建一个数组并将其作为第二个参数传递,但 Matlab 不理解这一点。您必须在 Matlab 中使用您的参数显式创建一个数组,并将其作为第二个参数传递给 Java 方法。

关于java - 在 Matlab 调用的 java 方法中使用可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com