gpt4 book ai didi

dart - dart,给定一个类的实例,是否有可能以升序获取其继承的所有类型的列表?

转载 作者:行者123 更新时间:2023-12-03 03:02:57 27 4
gpt4 key购买 nike

如果我有:

List<Type> getInheritanceStructure(){
// TODO
}

class A{
}
class B extends A{
}
class C extends B{
}

var c = new C();

List<Type> types = getInheritanceStructure(c);

types.forEach((type) => print(type));

//should print out:
C
B
A
Object

是否有可能获得像这样的类型列表?

最佳答案

您需要一个类镜像,从那里可以遍历所有父类(super class)。

List<Type> getInheritanceStructure(Object o){
ClassMirror baseClass = reflectClass(o.runtimeType);
return walkSuperclasses(baseClass);
}

List<Type> walkSuperclasses(ClassMirror cm) {
List<Type> l = [];
l.add(cm.reflectedType);
if(cm.superclass != null) {
l.addAll(walkSuperclasses(cm.superclass));
}
return l;
}

关于dart - dart,给定一个类的实例,是否有可能以升序获取其继承的所有类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21851931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com