使用dart中的镜像从类中获取静态常量

时间:2015-04-22 22:32:49

标签: dart dart-mirrors

我正在尝试使用镜像获取Float32List(和其他类型数据数组)中的BYTES_PER_ELEMENT常量,但我得到的只是异常No static getter 'BYTES_PER_ELEMENT' declared in class 'Float32List'.所以更一般地说,我如何访问类的静态常量?

import 'dart:typed_data';
import 'dart:mirrors';

main() {
  var array = new Float32List(10);

  var bytesPerElement = reflect(array).type.getField(#BYTES_PER_ELEMENT).reflectee;

  print(bytesPerElement);
}

1 个答案:

答案 0 :(得分:2)

new Float32List()是一个工厂构造函数,它返回_Float32Array,但没有BYTES_PER_ELEMENT

print(reflect(array).type);

打印

ClassMirror on '_Float32Array'
var bytesPerElement = 
    reflectClass(Float32List)
    .getField(#BYTES_PER_ELEMENT)
    .reflectee;

打印

4

我非常确定无法使用镜像找到从_Float32Array返回Float32List的方法。