2015-04-22 1 views
2

Я пытаюсь получить константу BYTES_PER_ELEMENT в Float32List (и других типизированных массивах данных) с использованием зеркал, но все, что я получаю, является исключением No static getter 'BYTES_PER_ELEMENT' declared in class 'Float32List'. Так что в целом, как можно Я получаю доступ к статическим константам класса?Получение статической константы из класса с использованием зеркал в dart

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); 
} 

ответ

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 с помощью зеркал.