接收字符串...参数并将其值传递给接收字符串的其他方法...参数
private String createURI (String URL , String... parameters) {
if (parameters != null && parameters.length > 0) {
return String.format(URL, "5435534", "John" , parameters[0].toString());
}
return String.format(URL, "5435534", "John");
}
我创建了一个方法,该方法应该支持获取URL或URL +附加参数,并通过传递来创建URL值。 当然,URL中%s的数量应该适合参数的数量。接收字符串...参数并将其值传递给接收字符串的其他方法...参数
我用它这样的:
createURI ("%s/call/%s")
==> 5435534 /通话/约翰
createURI ("%s/call/%s/%s" , "familyName")
==> 5435534 /通话/约翰/ familyName
我没有想创造这样的事情: String createURI (String URL , String parameter)
只是当我不想使用它时传递空字符串,然后在方法中检查文本是否为空,并调用下一个方法:
createURI ("%s/call/%s" , "")
createURI ("%s/call/%s/%s" , "FamilyName")
我的问题是我怎样才能改善它通过发送收到的参数到String.format方法没有明确发送[0]项目 - 我不想检查值,String.format
已经这样做,但已字符串值。如果我只是将参数(字符串...)传递到String.format(URL, "5435534", parameters)
,它不会收到实际的字符串值,而是全部的对象。
private String createURI (String URL , String... parameters) {
ArrayList<String> strs = new ArrayList<>();
strs.add("5435534");
strs.add("John");
strs.addAll(Arrays.asList(parameters);
return String.format(URL, strs.toArray());
}
可以加入所有参数列表并将其转换为阵列为String.format
。这样就不会如果为此。并需要拨出:varargs
默认大小为。
String.format()
(没有Locale
参数)使用两个参数:一个格式字符串,和Object
的数组:
public static String format(String format,
Object... args)
由于第二参数使用...
符号,则有用于使第二个参数两个选项:要么你可以传递一个Object[]
,要么你可以传递任何类型的零个或多个参数,然后将它们捆绑到一个Object[]
。这是唯一的两个选择。你不能说,传递两个参数,然后传递一个数组,该方法将会看作第三,第四等参数。该数组将被视为单个参数。
但是,您可以创建自己的Object[]
阵列,设置数组的前两个元素,并在复制的剩余部分,是这样的:
Object[] formatParameters = new Object[parameters.length + 2];
formatParameters[0] = "5435534";
formatParameters[1] = "John";
for (int i = 0; i < parameters.length; i++) {
formatParameters[i + 2] = parameters[i];
}
return String.format(URL, formatParameters);
注意formatParameters
必须Object[]
这个工作(我认为它不会与String[]
一起使用)。这是为了让编译器意识到你正在传递一个参数数组,而不是一个类型恰好是数组的参数。 (注意:应该有Arrays
中的方法可以从parameters
复制到formatParameters
而没有循环,但我现在不想看到它们。)
不太清楚你尝试一下,但你尝试看看串API https://docs.oracle.com/javase/8/docs/api/java/lang/String.html? –
我不认为你可以用你想要的方式使用'String.format'方法。您可能需要将循环连同循环一起使用。 –
注意:如果'parameters'是一个String的数组,'parameters [0]'上的'toString()'没有任何用处。 'parameters [0]'将与'parameters [0] .toString()'完全相同。 – ajb