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

public @Interface KeyFor

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

Indicates that the value assigned to the annotated variable is a key for at least the given map(s).

The value of the annotation is the reference name of the map. Suppose that config is a Map<String, String>. Then the declaration

@KeyFor("config") String key = "HOSTNAME"; 
indicates that "HOSTNAME" is a key in config.

The value of the annotation can also be a set of reference names of the maps. If defaultConfig is also a Map<String, String>, then

@KeyFor({"config","defaultConfig"}) String key = "HOSTNAME"; 
indicates that "HOSTNAME" is a key in config and in defaultConfig.

You do not usually need to write @KeyFor on the key type in a map. That is, you can declare variable Map<String, Integer> myMap; and the Nullness Checker will apply @KeyFor as appropriate. If you redundantly write @KeyFor, as in Map<@KeyFor("myMap") String, Integer> myMap;, then your code is more verbose, and more seriously the Nullness Checker will issue errors when calling methods such as Map.put.

See Also
EnsuresKeyFor, EnsuresKeyForIf

Method Summary

Modifier and TypeMethod and Description
public String[]
value()

Java expression(s) that evaluate to a map for which the annotated type is a key.

Inherited from java.lang.annotation.Annotation:
annotationTypeequalshashCodetoString

Method Detail

valueback to summary
public String[] value()

Java expression(s) that evaluate to a map for which the annotated type is a key.

Annotations
@JavaExpression