所有子類我在鏢三類:查找鏢
class A {}
class B extends A{}
class C extends A{}
有一種方式來獲得從A所有的子類?
編輯:
感謝亞歷山大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);
}
我很好奇你究竟在努力完成什麼。這是你的問題的答案只是一個簡單的「不」的情況之一,如果不知道實際的目標是什麼,我們不能真正提供幫助。 – 2013-04-22 20:34:56
我會推薦使用可反射的lib,因爲它更適合與dart2js一起使用,它也是由dart團隊提供的 – Jonathan 2016-11-14 09:47:47