gpt4 book ai didi

java - 如何在类中使用扩展泛型类型?

转载 作者:行者123 更新时间:2023-11-29 06:32:37 24 4
gpt4 key购买 nike

假设我有一些类如下:

class A { }

class B<TA extends A> { }

class C<TB extends B<? extends A>> {
TA varOfTypeTA; // this throws an error obviously
}

如何定义 varOfTypeTA 的类型成为 TB 的 TA 是什么?

我知道我可以将它定义为 A varOfTypeTA , 但我希望它的类型为 TA不是A .

我试图强制它用 class C<TB extends B<TA extends A>> 定义 TA所以我可以使用 TA , 但这会引发语法错误。

澄清一下,如果我再定义这些类:

class Horse extends A { }

class HorseHerd extends B<Horse> { }

class HorseHerder extends C<HorseHerd> {
Horse getFavoriteHorse() { return varOfTypeTA; } // varOfTypeTA defined in class C must be of type Horse, otherwise I have to cast
}

我怎样才能制作varOfTypeTA类型为 Horse

最佳答案

同时将 TA 声明为同一类中的泛型。

public class C<TA extends A, TB extends B<TA>> {
TA varOfTypeTA;
}

然后你就可以在你的类里面使用TA了。

class HorseHerder extends C<Horse, HorseHerd> {
Horse getFavoriteHorse() { return this.varOfTypeTA; }
}

我也很惊讶地发现声明的顺序在这里似乎并不重要。虽然我更愿意先声明 TA,但我发现这段代码也可以编译:

public class C<TB extends B<TA>, TA extends A> {
TA varOfTypeTA;
}

关于java - 如何在类中使用扩展泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29254898/

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