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.
| Modifier and Type | Method and Description |
|---|---|
| public Class | Returns: the type whose fields are fully initializedThe type-frame down to which the expression (of this type) has been initialized at least (inclusive). |
| value | back to summary |
|---|---|
| public Class The type-frame down to which the expression (of this type) has been initialized at least
(inclusive). That is, an expression of type
| |