All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.checkerframework.checker.nullness.qual.NonNull Maven / Gradle / Ivy

There is a newer version: 9.3.0
Show newest version
package org.checkerframework.checker.nullness.qual;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.checkerframework.framework.qual.DefaultFor;
import org.checkerframework.framework.qual.DefaultQualifierInHierarchy;
import org.checkerframework.framework.qual.LiteralKind;
import org.checkerframework.framework.qual.QualifierForLiterals;
import org.checkerframework.framework.qual.SubtypeOf;
import org.checkerframework.framework.qual.TypeKind;
import org.checkerframework.framework.qual.TypeUseLocation;
import org.checkerframework.framework.qual.UpperBoundFor;

/**
 * If an expression's type is qualified by {@code @NonNull}, then the expression never evaluates to
 * {@code null}. (Unless the program has a bug; annotations specify intended behavior.)
 *
 * 

For fields of a class, the {@link NonNull} annotation indicates that this field is never * {@code null} after the class has been fully initialized. For static fields, the {@link * NonNull} annotation indicates that this field is never {@code null} after the containing * class is initialized. "Fully initialized" essentially means that the Java constructor has * completed. See the Initialization Checker * documentation for more details. * *

This annotation is rarely written in source code, because it is the default. * * @see Nullable * @see MonotonicNonNull * @checker_framework.manual #nullness-checker Nullness Checker * @checker_framework.manual #initialization-checker Initialization Checker * @checker_framework.manual #bottom-type the bottom type */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER}) @SubtypeOf(MonotonicNonNull.class) @QualifierForLiterals(LiteralKind.STRING) @DefaultQualifierInHierarchy @DefaultFor(TypeUseLocation.EXCEPTION_PARAMETER) @UpperBoundFor( typeKinds = { TypeKind.PACKAGE, TypeKind.INT, TypeKind.BOOLEAN, TypeKind.CHAR, TypeKind.DOUBLE, TypeKind.FLOAT, TypeKind.LONG, TypeKind.SHORT, TypeKind.BYTE }) public @interface NonNull {}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy