Android Studio"可能是空的" URLUtil.isValidUrl()的警告,但不是TextUtils.isEmpty()的警告

时间:2015-11-18 13:18:15

标签: android android-studio warnings

我想知道为什么会这样:

enter image description here

请注意,两个if语句的顺序不会改变行为。

如果您查看两个检查器功能的源代码,我看不出两者的任何显着差异。那么为什么我只在第二种情况下收到警告呢?

public static boolean isEmpty(@Nullable CharSequence str) {
    if (str == null || str.length() == 0)
        return true;
    else
        return false;
}

public static boolean isValidUrl(String url) {
    if (url == null || url.length() == 0) {
        return false;
    }

    return (isAssetUrl(url) ||
            isResourceUrl(url) ||
            isFileUrl(url) ||
            isAboutUrl(url) ||
            isHttpUrl(url) ||
            isHttpsUrl(url) ||
            isJavaScriptUrl(url) ||
            isContentUrl(url));
}

更新:解决方案:

由于TextUtils.isEmpty()在参数上有@Nullable标记,因此适用:

  

标记为@Nullable或的变量,方法参数和返回值   @NotNull被视为可为空(或分别为非null)并使用   在分析期间检查可空性合同,例如报告   可能的NullPointerException错误。

1 个答案:

答案 0 :(得分:1)

您应该注意到TextUtils.isEmpty参数是使用@Nullable注释注释的。 UrlUtil.isValidUrl没有此注释。