所有 FFI 联合类型的超类型。
FFI 联合类型应扩展此类并声明对应于底层原生联合的字段。
在 Union 子类声明中的字段声明将自动获得一个设置器和获取器实现,该实现通过访问内存中的原生联合字段。
在 Union 子类声明中的所有字段声明都必须是 int 或 double 类型,并使用代表原生类型的 NativeType 进行注解,或者必须是 Pointer、Array 或 Struct 或 Union 的子类型。例如
typedef union {
int a;
float b;
void* c;
} my_union;
final class MyUnion extends Union {
@Int32()
external int a;
@Float()
external double b;
external Pointer<Void> c;
}
Union 子类的字段声明 必须 被标记为 external
。联合子类直接指向原生内存(Pointer)或 Dart 内存(TypedData)中的一个位置,外部字段的获取器和设置器实现直接从这个位置读取和写入适当的字节。这不允许存在非原生字段。
不能使用生成构造函数创建联合子类的实例。相反,可以通过 UnionPointer.ref、Union.create、FFI 调用返回值、FFI 回调参数、UnionArray 以及访问 Union 字段来创建实例。要创建由原生内存支持的实例,请使用 UnionPointer.ref。要创建由 Dart 内存支持的实例,请使用 Union.create。
- 实现类型
- 可用的扩展
- 注解
-
- @Since('2.14')
构造函数
属性
- hashCode → int
- 此对象的哈希码。no setterinherited
- runtimeType → Type
- 对象的运行时类型的表示。no setterinherited
方法
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时被调用。inherited
-
toString(
) → String - 此对象的字符串表示。inherited
运算符
-
operator ==(
Object other) → bool - 等于运算符。inherited