【发布时间】:2013-04-15 13:13:57
【问题描述】:
我在 dart 中有三个类:
class A {}
class B extends A{}
class C extends A{}
有没有办法从 A 获取所有子类?
编辑:
感谢 Alexandre Ardhuin,您的解决方案完美运行!
我正在学习飞镖 我编辑了你的代码并放了递归解决方案,看看:
import 'dart:mirrors';
class A {}
class B extends A{}
class C extends A{}
class D {}
class E extends C {}
bool isParent(String parent,ClassMirror clazz){
var objectParentName = MirrorSystem.getName(clazz.superclass.simpleName);
if (objectParentName == "Object"){
return parent == "Object";
}
var result = parent == objectParentName;
if (!result){
return isParent(parent,clazz.superclass);
}
return result;
}
List<String> findAllSubclasses(String clazz){
var result = [];
final ms = currentMirrorSystem();
ms.isolate.rootLibrary.classes.forEach((s,c) {
if (isParent(clazz,c)){
result.add(MirrorSystem.getName(c.simpleName));
}
});
return result;
}
main(){
var result = findAllSubclasses('A');
print(result);
}
【问题讨论】:
-
我很好奇你实际上想要完成什么。这是您的问题的答案是简单的“不”的情况之一,如果不知道实际目标是什么,我们真的无能为力。
-
我建议使用反射库,因为它更好地与 dart2js 一起使用,它也是由 dart 团队提供的
标签: inheritance reflection dart dart-mirrors