Consider the following example:
class IntSubArray {
@HasSubsequence(subsequence = "this", from = "this.start", to = "this.end")
int [] array;
@IndexFor("array") int start;
@IndexOrHigh("array") int end;
}
The above annotations mean that the value of an IntSubArray object is equal to a
subsequence of its array field.
These annotations imply the following relationships among @IndexFor
annotations:
i is @IndexFor("this"), then this.start + i is
@IndexFor("array").
j is @IndexFor("array"), then j - this.start is
@IndexFor("this").
a to array, 4 facts need to be true:
start is @NonNegative.
end is @LTEqLengthOf("a").
start is @LessThan("end + 1").
this equals array[start..end-1]
subsequence field is equal
to the given subsequence and then suppress the warning.
For an example of how this annotation is used in practice, see the test GuavaPrimitives.java in /checker/tests/index/.
This annotation may only be written on fields.
| Modifier and Type | Method and Description |
|---|---|
| public String | |
| public String | |
| public String |
| from | back to summary |
|---|---|
| public String from() The index into this where the subsequence starts.
| |
| subsequence | back to summary |
|---|---|
| public String subsequence() An expression that evaluates to the subsequence.
| |
| to | back to summary |
|---|---|
| public String to() The index into this, immediately past where the subsequence ends.
| |