Union抽象

所有 FFI 联合类型的父类型。

FFI 联合类型应该扩展此类并声明对应于底层本地联合的字段。

Union 子类声明中的字段声明将自动提供设置器和获取器实现,以访问内存中的本地联合字段。

Union 子类声明中的所有字段声明都必须是类型 intdouble,并使用表示本地类型的 NativeType 进行注解,或者必须是类型 PointerArrayStructUnion 的子类型。例如

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.refUnion.create、FFI 调用返回值、FFI 回调参数、UnionArray 以及访问 Union 字段来创建实例。要创建由本地内存支持的实例,请使用 UnionPointer.ref。要创建由 Dart 内存支持的实例,请使用 Union.create

实现类型
注解
  • @Since('2.14')

构造函数

Union()
创建对 nullptr 的引用。

属性

hashCode int
此对象的哈希码。
no setterinherited
runtimeType Type
对象的运行时类型表示。
no setterinherited

方法

noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
inherited
toString() String
此对象的字符串表示。
inherited

操作符

operator ==(Object other) bool
等于运算符。
inherited

静态方法

create<T 扩展 Union>([TypedData typedData, int offset]) → T
typedData 中创建一个联合视图的字节。