向工具框架返回某一注释的建议 completion 迭代。因为要求 completion,所以提供的有关注释的信息可能是不完整的,就像用于源代码片段的信息一样。processor 可能返回一个空迭代。注释 processor 应该将其约束
iis7站长之家集中在提供注释成员的 completion 上,这些成员具有 processor 已知的其他有效性约束,例如值应该在 1 和 10 之间的 int
成员,或者应该由已知语法识别的字符串成员,比如正则表达式或者 url。
因为将为不完整的程序建立模型,所以某些参数可能只有部分信息,或者可能为 null
。element
和 usertext
中必须至少有一个不为 null
。如果 element
不为 null
,则 annotation
和 member
可以为 null
。如果某些参数为 null
,processor 可能不会抛出 nullpointerexception
;如果 processor 基于所提供的信息不提供 completion,则可能返回一个空迭代。processor 也可能返回一个具有空值字符串的单个 completion,以及描述不提供 completion 的原因的消息。
completion 包含许多信息,它可以反映注释 processor 执行的其他有效性检查。例如,考虑以下简单注释:
@mersenneprime {
int value();
}
(素数 mersenne 是 2n - 1 形式的素数。)如果给定此注释类型的 annotationmirror
,则可以返回 int
范围内所有这类素数的列表,而无需检查 getcompletions
的其他任何参数:
import static javax.annotation.processing.completions.*;
...
return arrays.aslist(of
("3"),
of("7"),
of("31"),
of("127"),
of("8191"),
of("131071"),
of("524287"),
of("2147483647"));
包含更多信息的 completion 集合还包括每个素数的数量:
return arrays.aslist(of
("3", "m2"),
of("7", "m3"),
of("31", "m5"),
of("127", "m7"),
of("8191", "m13"),
of("131071", "m17"),
of("524287", "m19"),
of("2147483647", "m31"));
不过,如果 usertext
是可用的,则可以检查它,以查看是否只有素数 mersenne 的子集是有效的。例如,如果用户键入了以下内容
@mersenneprime(1
则 usertext
的值将是 "1"
;并且只有两个素数可能是 completion:
return arrays.aslist(of("127", "m7"),
of("131071", "m17"));
有时可能不是有效的 completion。例如,范围内没有以 9 开头的 mersenne 素数:
@mersenneprime(9
在这种情况下,适当的响应是返回一个空的 completion 列表,
return collections.emptylist();
或者返回一个包含帮助消息的单个空 completion
return arrays.aslist(of("", "no in-range mersenne primes start with 9"));
- 参数:
element
- 将被注释的元素annotation
- 将应用于元素的注释(可能是一部分)member
- 为其返回可能 completion 的注释成员usertext
- 将补充完整的源代码文本
- 返回:
- 注释的建议 completion