Skip to content

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,预测第二行输出。

精确规则:参考。

Norm 0.25