簡體   English   中英

當檢查在方法內部時,如何避免空指針訪問警告?

[英]How can I avoid null pointer access warning when the check is inside a method?

我處理以下方法:

boolean isNullOrEmpty(String s) {
  return s == null || s.length() == 0;
}

麻煩的是,它與@Nullable不兼容。 對於istance,在以下代碼中,不應顯示警告。

void test(@Nullable String s) {
  if (!isNullOrEmpty(s)) {
    s.length(); // warning : o may be null
  }
}

有沒有辦法讓這個警告消失,同時保存isNullOrEmptyNullable

你有沒有理由不使用if(o!= null)?

Objects.isNull的目的是用作謂詞:.filter(Objects :: isNull)

這個警告可能是一個錯誤。 如果您真的希望它消失,您可以使用@SuppressWarnings注釋您的方法

我想如果你重構一下使用Optional你會更好。

@NonNull Optional<String> optNullOrEmpty(@Nullable String s) {
  if (s == null || s.length() == 0)
    return Optional.empty();
  else
    return Optional.of(s);
}

然后你可以用它作為:

void test(@Nullable String s) {
  @NonNull Optional<String> os = optNullOrEmpty(s);
  if (os.isPresent()) {
    @NonNull String s1 = os.get();
    s1.length(); // No warning :-)
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM