gpt4 book ai didi

java - 为什么 JPA API Path.get(MapAttribute) 和 Path.get(PluralAttribute) 参数中没有 "? super X"?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:57 24 4
gpt4 key购买 nike

这是一个关于 JPA API for Path 的设计问题.

(我并不是想解决问题或寻找解决方法,只是询问为什么 API 是以某种方式设计的。)

API 具有以下方法:

  1. <Y> Path<Y> Path.get(SingularAttribute<? super X, Y> attribute)
  2. <E, C extends Collection<E>>
    Expression<C> Path.get(PluralAttribute<X, C, E> attribute)
  3. <K, V, M extends Map<K,V>>
    Expression<M> Path.get(MapAttribute<X, K, V> attribute)

我的问题是方法 #1 为何接受泛型类型 <? super X, ...> 的属性,但方法 #2 和 #3 只接受泛型类型 <X, ...> 的属性?

似乎相同的推理应该适用于所有三种情况:也就是说,属性可以源自(即对应于类 X 中声明的属性)或 X 的任何父类(super class).

但是在 #2 和 #3 中,该属性只允许源自类 X .

这是 JPA 规范中的设计疏忽,还是存在一些我没有看到的差异的根本原因?

最佳答案

回答我自己的问题。这是一个规范错误。

感谢@DN1指出spec issuecomment .

关于java - 为什么 JPA API Path.get(MapAttribute) 和 Path.get(PluralAttribute) 参数中没有 "? super X"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097729/

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