gpt4 book ai didi

oop - 使用泛型参数覆盖Dart方法

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

在这种情况下,我是从父类(super class)扩展而来的,使用Generics键入的方法如下:

楷模

abstract class SuperClass { 

//.....
}


class SubClass extends SuperClass {
int a;
int b;
String c;
//....
}

Controller

abstract class A {
T getDoc<T extends SuperClass>(T doc);
}

class B extends A {
T getDoc<T extends SubClass>(T doc) { //<================ Error
//....
}
}


基本上, B类将只处理 SubClass模型以及扩展它的任何类。扩展 SuperClass是不够的。这是强制使用类型的方法。我可以添加一个辅助函数,该函数将检查类 B( doc is SubClass)中每个方法的类型,但似乎有很多重复。

但是,当重写类B中的 getDoc方法时,尽管 SubClassSuperClass,它不是有效的重写,但是上述架构失败。我怎样才能实现这样的目标?还是有更好的方法呢?赞赏任何指针:)

最佳答案

我终于找到了一种方法:)

因此,我希望B类的方法只接受扩展SubClass的类型,但是A类的方法的签名需要扩展SuperClass类的参数。

为此,我做了以下工作:

楷模

abstract class SuperClass { 

//.....
}


class SubClass extends SuperClass {
int a;
int b;
String c;
//....
}

Controller

abstract class A<K extends SuperClass> {
T getDoc<T extends K>(T doc);
}

class B extends A<SubClass> {
T getDoc<T extends SubClass>(T doc) {
//.......
}
}

关于oop - 使用泛型参数覆盖Dart方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60294245/

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