72 注解保留策略
CompileHint 使用源码保留,CatalogHint 使用二进制保留。运行时注解查询都不会返回它们。二进制元数据供编译器和文档工具使用;运行时反射则需要 RuntimeRetention。
norm
import std.annotation.TypeTarget
import std.annotation.SourceRetention
import std.annotation.BinaryRetention
annotation CompileHint implements TypeTarget, SourceRetention {}
annotation CatalogHint implements TypeTarget, BinaryRetention {}
@CompileHint()
@CatalogHint()
class Task {}
main() {
printLine(Task.class.annotation<CompileHint>() == null)
printLine(Task.class.annotation<CatalogHint>() == null)
}预期输出:
text
true
true动手试试:把 CatalogHint 改为 RuntimeRetention,预测第二行输出。
精确规则:参考。