-1

我知道查询字符串是 URL 的一部分,后跟“?” 分离字符。我正在浏览一个示例代码。我不明白这行代码的目的 -

String urlString = request.getRequestURL().toString();
String queryString = request.getQueryString();

urlString += queryString == null ? "" : "?" + queryString; 
// HOWS DOES THIS APPEND THE URL AND QUERY TO GENERATE URL. AND WHAT IS IT COMPARING TO NULL?

URL url = 新 URL(urlString);

4

3 回答 3

1

查询字符串可能不存在(即 null),在这种情况下,代码注意不附加“?”。重新格式化:

urlString += (  (queryString == null) ? " " : ("?"+queryString)  );
于 2013-06-25T18:29:05.177 回答
1

它是 java 三元运算符(有时称为 elvis 运算符?:)。语义如下:

bool ? A : B 

是相同的

if (bool) A
else B

在你的情况下:

urlString += (queryString == null ? "" : "?") + queryString; 

仅当不等于时才会附加到(queryString否则将附加“”)。urlStringqueryStringnull

于 2013-06-25T18:30:42.373 回答
0

我猜你不知道三元运算符,即(if) ? (then) : (else)

在你的情况下if (queryString != null) then ("") else ("?" + queryString)

问题中的代码也缺少括号,因为它应该是这样的:

urlString += queryString == null ? "" : ("?" + queryString); 
于 2013-06-25T18:32:53.287 回答