成员访问运算符Documentation Index
Fetch the complete documentation index at: https://fluxon.tabooproject.org/llms.txt
Use this file to discover all available pages before exploring further.
. 用于在对象上读取属性(字段/Getter)或调用方法,例如 obj.name、obj.size()。
基本语法
读取属性(字段 / Getter)
- 先尝试读取 public 字段
name - 再尝试调用无参方法
getName() - 再尝试调用无参方法
name() - 再尝试调用无参方法
isName()(常见于布尔属性)
&e.message 会优先解析为 getMessage()(如果存在)。
调用方法
链式访问
启用与关闭(反射访问开关)
宿主集成(Java)
成员访问. 受 CompilationContext#allowReflectionAccess 控制。默认值由 FluxonFeatures.DEFAULT_ALLOW_REFLECTION_ACCESS
决定(默认 false)。
如果你在宿主侧解析/编译脚本,需要显式开启:
CLI / REPL
Fluxon 的交互式控制台通常会默认开启反射访问,因此在 REPL 中使用. 往往不需要额外配置。
与上下文调用 :: 的区别
obj :: func(...):调用 Fluxon 的扩展函数(由运行时注册),不依赖 Java 反射,适合稳定的“语言级能力”。obj.member/obj.member(...):直接访问宿主对象的成员(反射),更像“桥接能力”,会受宿主类型、可见性与安全策略影响。
常见错误与边界
- 反射访问未开启:解析阶段会报错并提示开启
allowReflectionAccess。 - 目标为
null:会抛出NullPointerException(例如Cannot access member 'x' on null object),可用if/?:做保护:
- 成员不存在:会抛出
MemberNotFoundError。 - 访问失败:可能抛出
MemberAccessError或被包装为运行时异常(例如方法内部抛出的异常)。