在Dart中,从变量调用静态方法的问题

时间:2013-12-27 02:55:58

标签: class static dart dart-mirrors

使用静态方法Klass

创建课程fn1
class Klass {
  static String fn1() => 'hello';
}

> Klass.fn1(); //  hello

但是当Klass被分配给变量时,调用方法fn1将失败

var k = Klass;

> k.fn1() // "Unhandled exception: Class '_Type' has no instance method 'fn1'.

不太清楚这里发生了什么

2 个答案:

答案 0 :(得分:2)

我不确定这里代码的意图是什么,但您可能希望使用dart:mirrors反映调用fn1()。我不相信你可以通过为变量分配Klass来调用它。以下是如何做到这一点:

import 'dart:mirrors';

class Klass {
  static String fn1() => 'hello';
}

main() {
  final mirror = reflectClass(Klass);
  print(mirror.invoke(#fn1, []).reflectee); // Prints 'hello'.

}

答案 1 :(得分:2)

一个简单的解决方法

class Klass {
  static fn1(String name) {
    return name;
  }
  
  fn1NonStatic(String name) {
    return fn1(name);
  }
}

Klass().fn1NonStatic("test");