Top Description Methods
org.checkerframework.checker.initialization.qual

public @Interface UnderInitialization

extends Annotation
Annotations
@Documented
@Retention:RUNTIME
@Target:TYPE_USE, TYPE_PARAMETER
@SubtypeOf:UnknownInitialization
Imports
java.lang.annotation.Documented, .ElementType, .Retention, .RetentionPolicy, .Target, org.checkerframework.checker.nullness.qual.NonNull, org.checkerframework.framework.qual.SubtypeOf

This type qualifier indicates that an object is (definitely) in the process of being constructed/initialized. The type qualifier also indicates how much of the object has already been initialized. Please see the manual for examples of how to use the annotation (the link appears below).

Consider a class B that is a subtype of A. At the beginning of the constructor of B, this has the type @UnderInitialization(A.class), since all fields of A have been initialized by the super-constructor. Inside the constructor body, as soon as all fields of B are initialized, then the type of this changes to @UnderInitialization(B.class).

Code is allowed to store potentially not-fully-initialized objects in the fields of a partially-initialized object, as long as all initialization is complete by the end of the constructor.

What type qualifiers on the field are considered depends on the checker; for instance, the org.checkerframework.checker.nullness.NullnessChecker considers NonNull. The initialization type system is not used on its own, but in conjunction with some other type-system that wants to ensure safe initialization.

When an expression has type @UnderInitialization, then no aliases that are typed differently may exist.

Method Summary

Modifier and TypeMethod and Description
public Class<?>

Returns:

the type whose fields are fully initialized
value
()

The type-frame down to which the expression (of this type) has been initialized at least (inclusive).

Inherited from java.lang.annotation.Annotation:
annotationTypeequalshashCodetoString

Method Detail

valueback to summary
public Class<?> value()

The type-frame down to which the expression (of this type) has been initialized at least (inclusive). That is, an expression of type @UnderInitialization(T.class) has all type-frames initialized starting at Object down to (and including) T.

Returns:Class<?>

the type whose fields are fully initialized