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

public @Interface UnknownInitialization

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

This type qualifier indicates how much of an object has been fully initialized. An object is fully initialized when each of its fields contains a value that satisfies the field's declaration.

An expression of type @UnknownInitialization(T.class) refers to an object that has all fields of T (and any super-classes) initialized. Just @UnknownInitialization is equivalent to @UnknownInitialization(Object.class).

A common use is

void myMethod(@UnknownInitialization(MyClass.class) MyClass this, ...) { ... }
which allows myMethod to be called from the MyClass constructor. See the manual for more examples of how to use the annotation (the link appears below).

Reading a field of an object of type @UnknownInitialization might yield a value that does not correspond to the declared type qualifier for that field. For instance, consider a non-null field:

@NonNull Object f;
In a partially-initialized object, field f might be null despite its @NonNull type annotation.

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.

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 @UnknownInitialization(T.class) has all type-frames initialized starting at Object down to (and including) T.

Returns:Class<?>

the type whose fields are fully initialized