gpt4 book ai didi

java - JPA 不明确的方法调用 isMember

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:02 26 4
gpt4 key购买 nike

CriteriaBuilder 重载方法 isMember(...)

创建一个谓词来测试元素是否是集合的成员。

<E,C extends java.util.Collection<E>> 
Predicate isMember(E elem, Expression<C> collection)

<E,C extends java.util.Collection<E>>
Predicate isMember(Expression<E> elem, Expression<C> collection)

我在以下调用中遇到了不明确的编译错误:

CriteriaBuilder.isMember((Expression<Object>)a, (Expression<Collection<Object>>)b);

成员类型可以是任意类型,所以是Object类型。如何解决?谢谢。

最佳答案

您可以声明一个(未经检查的)通用类型来链接强制转换,也许在内部私有(private)方法中以避免它对其他调用者可见。这甚至可以编译:

CriteriaBuilder cb;
Object a;
Object b;

@SuppressWarnings("unchecked")
private <E> void isMember() {

cb.isMember((Expression<E>) a, (Expression<? extends Collection<E>>) b);
}

尽管 ab 作为类型 Expression 会更好,和/或作为方法中的局部变量或参数以获得更多局部范围.

关于java - JPA 不明确的方法调用 isMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38796101/

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