[解決済み】メソッドの引数でNotNullアノテーションを使用する。
2022-04-17 18:32:19
質問
を使い始めたところです。
@NotNull
アノテーションをJava 8で使用したところ、予期せぬ結果が得られました。
こんなメソッドがあるんです。
public List<Found> findStuff(@NotNull List<Searching> searchingList) {
... code here ...
}
引数searchingListにnull値を渡すJUnitテストを書きました。何らかのエラーが発生すると思っていたのですが、まるでアノテーションが存在しないかのように通過してしまいました。これは期待された動作なのでしょうか?私が理解したところでは、これはお決まりのNULLチェックコードを書くのを省略できるようにするためのものです。
NotNullが具体的に何をするものなのかの説明があれば、非常にありがたいです。
どのように解決するのですか?
@Nullable
と
@NotNull
は、それ自体では何もしません。それらはDocumentationの道具として機能することになっている。
は
@Nullable
アノテーションは、次のような場合にNPEチェックを導入する必要性を喚起します。
- nullを返す可能性のあるメソッドを呼び出している。
- nullになりうる変数(フィールド、ローカル変数、パラメータ)の再参照を行う。
は
@NotNull
アノテーションは、実際には、以下を宣言する明示的な契約である。
- メソッドはnullを返してはならない。
- 変数 (フィールド、ローカル変数、パラメータなど) はできません。 べきではない はヌル値を保持する。
例えば、書く代わりに
/**
* @param aX should not be null
*/
public void setX(final Object aX ) {
// some code
}
使用することができます。
public void setX(@NotNull final Object aX ) {
// some code
}
さらに
@NotNull
がチェックされることが多い。
ConstraintValidators
(例えば、spring や hibernate の場合)。
は
@NotNull
アノテーションは、それ自身では何の検証も行いません。
アノテーション定義
は何も提供しません。
ConstraintValidator
型の参照になります。
詳しくはこちらをご覧ください。
関連
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] javadocでメソッドを参照するには?
-
[解決済み] モックされたメソッドに渡された引数を返すようにする
-
[解決済み] Mockitoを使用して特定のメソッドが呼び出されていないことを確認するにはどうすればよいですか?
-
[解決済み] Transactionalアノテーションはどこに属しますか?
-
[解決済み] Nullableアノテーションの使用方法
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
linux run jarfile Invalid or corrupt jarfile error.
-
org.glassfish.jersey.servlet.ServletContainer
-
ローカルリソースのロードが許可されていない場合の解決策