gpt4 book ai didi

java - 如何引用泛型类型参数的泛型类型参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:06 25 4
gpt4 key购买 nike

实体接口(interface):

public interface Entity<Id>
{
Id getId();
}

和道:

public interface Dao<T extends Entity<Id>, Id>
{
T find(Id id);
}

如果我尝试删除 Dao (Id) 上的第二个类型参数,我会得到“Id 无法解析为类型”。我的问题是是否有可能以某种方式摆脱 Dao 上的第二个类型参数,因为它本质上是多余的。

明确地说,我试图避免在使用 Dao 的所有地方重复 Id 类型。在 Entity 接口(interface)中指定一次该类型就足够了。

现在我必须像这样重复一遍:

private Dao<Car, UUID> carDb;

我使用 Car Dao 的所有地方。

最佳答案

这不可能。

Dao<T extends Entity<Id>, Id>第二类参数 IdDao 的意义上不是多余的在两个类型参数上进行参数化,一个有界类型 T及其他Id ,另外,EntityId 上进行参数化. (看区别,by this you are restricting the type parameter of Entity to be same as second type parameter of Dao)

只有在编译器已经知道 Entity 的 Type 参数的情况下才有可能。

interface Dao<T extends Entity<String>> {
T find(String id);
}

关于java - 如何引用泛型类型参数的泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256855/

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