7

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'.

不太清楚这里发生了什么

4

2 回答 2

5

一个简单的解决方法

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

Klass().fn1NonStatic("test");
于 2020-07-14T05:05:22.330 回答
4

我不确定这里代码的意图是什么,但您可能想使用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'.

}
于 2013-12-27T04:39:00.297 回答