1

我有这部分代码:

/**
 * Checks if the provided URL is valid.
 *
 * @param urlToCheck - The URL to check.
 *
 * @return boolean true if it's valid.
 */
protected boolean isUrlValid( String urlToCheck )
{
    boolean isValid = true;
    try
    {
        URL url = new URL( urlToCheck );
    }
    catch ( MalformedURLException exception )
    {
        isValid = false;
    }

    return isValid;
}

如您所见,我正在创建一个新的 URL 对象,如果字符串 URL 无效,它会崩溃。这是有效的,“问题”是 LINT 说我没有使用url变量。我真的不必使用它,所以这是我的问题:

  • 还有其他更好的方法吗?
  • 我可以禁止只检查这条线的 lint 吗?
4

4 回答 4

5

您会看到一条警告,因为您没有使用该变量并且可能会浪费内存。如果你不需要变量,你可以做这样的事情

protected boolean isUrlValid( String urlToCheck )
{
    boolean isValid = true;
    try
    {
        new URL( urlToCheck ); // Notice this
    }
    catch ( MalformedURLException exception )
    {
        isValid = false;
    }

    return isValid;
}
于 2013-11-06T12:11:21.583 回答
4

这样做没有错,但是没有使用您的变量。

你可以改变

URL url = new URL( urlToCheck );

new URL( urlToCheck );
于 2013-11-06T12:11:13.067 回答
1

你可以更换

URL url = 新 URL( urlToCheck );

像这样:

new URL( urlToCheck );

这将确保您没有任何未使用的指向 URL 对象的引用。因此编译器不会抱怨。

于 2013-11-06T12:11:46.050 回答
0

以相反的顺序:

  • 正如其他人所指出的那样,您可以通过不创建新变量来消除警告(仅使用new Url(urlToCheck);

但也许更好的方法是:

  • 使用URLUtil.isValidUrl(String url)- 查看它的源代码,我发现它不会创建一个可能更好的新 url 变量,但它看起来只是检查字符串是否以已知方案开头。由您决定这是否足够
于 2013-11-06T14:33:47.277 回答