














本文是「far 语言」系列文档之一,总目录见《【far 语言】语言文档目录》。
Far 注解为 Java 风格:
@名字或@名字(参数...),注解名首字母必须大写。
@Extern("c", "strlen") // 内建注解:FFI 声明外部 C 函数
static long strlen(RawPtr<AbiChar> s);
@Retention(RUNTIME) // 保留策略:运行期保留
@Component // 自定义注解
class OrderController { ... }
| 级别 | 语义 |
|---|---|
| SOURCE(默认) | 编译期消费,编译后彻底消失(如 @Extern) |
| RUNTIME | @Retention(RUNTIME) 标记 → 编译期生成元数据表 → 运行期反射读取 |
@Retention(RUNTIME) // 保留策略(应用到注解类型声明)
@Target(CLASS, METHOD, FIELD) // 目标限定(默认全部允许)
annotation MyAnno {
string name; // 无默认值 = 必填参数
string path = ""; // 有默认值 = 可选参数
}
annotation,注解类型名首字母必须大写。string / long / bool。@Retention / @Target 仅允许出现在注解类型声明前。@Target 目标:CLASS / METHOD / FIELD。str/toString/toLong/toInt/toDouble/len/size/substr,参数可嵌套,2026-08-23):@Tag(name = str(42), msg = substr("hello", 0, 3)) → 编译期求值为 "42" / "hel"@Retention(RUNTIME)
@Target(CLASS)
annotation Component {
string name = "";
}
@Component
class App { ... }
@Target(FIELD) 标在方法上)→ 编译报错。// 顶层函数(需 @Retention(RUNTIME) 才可读)
hasAnnotation(类名, 方法名, 注解名) → bool(方法名空串 = 类级)
getAnnotation(类名, 方法名, 注解名) → string(参数编码串)
annotationArg(类名, 方法名, 注解名, key) → string
annotationsOf(类名, 方法名) → string[](注解名列表)
annotationMap(类名, 方法名, 注解名) → map<string,string>(参数名→值)
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。