gpt4 book ai didi

具有两个相关类型的 Java 泛型类

转载 作者:行者123 更新时间:2023-11-30 06:25:40 27 4
gpt4 key购买 nike

我想做的是:

public class DBManager<T extends Type , Q extends Query>{
T create(T t);
Collection<T> read(Q query);
T update(T t);
}

但是,我只想要 T 和 Q 相关的此类的实例化。例如,如果 T 是 AppleType,那么我希望 Q 是 AppleQuery 而不是 PearQuery。

有没有办法做到这一点,或者产生类似的行为?

我试过 Q extends T & Query,但这是不允许的。

最佳答案

除非类型本身在类型系统中有某种关系,否则你不能这样做。

因为我不知道你到底想做什么,所以很难准确地推荐一些东西,但听起来你可能想做这样的事情:

public abstract class Type {
...
}

public class AppleType extends Type {
...
}

public abstract class Query<T extends Type> {
public abstract T doQuery(); /* Or so? */
}

public class AppleQuery extends Query<AppleType> {
public AppleType doQuery() {...}
}

有了从 QueryType 的正式关系,您就可以这样定义您的 DBManager:

public class DBManager<T extends Type, Q extends Query<T>> {
T read(Q id);
}

关于具有两个相关类型的 Java 泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346657/

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