Java 具有泛型映射扩展对象的方法签名

Java 具有泛型映射扩展对象的方法签名,java,generics,Java,Generics,虽然这段代码正在运行,但它仍然让我感到困惑: public static <K, V> Map<K, V> entityListToIdMap(List<? extends BaseEntity<K>> list, Class<K> keyClass) { Map<K, V> map = new TreeMap<K, V>(); if(list != null){ for (Bas

虽然这段代码正在运行,但它仍然让我感到困惑:

public static <K, V> Map<K, V> entityListToIdMap(List<? extends BaseEntity<K>> list, Class<K> keyClass) {
    Map<K, V> map = new TreeMap<K, V>();
    if(list != null){
        for (BaseEntity<K> item : list) {
            map.put(item.getId(), (V) item);
        }
    }
    return map;
}

定义泛型类型时只需定义它:

public static <K, V extends BaseEntity<K>> Map<K, V> entityListToIdMap(..) {
公共静态映射entityListToIdMap(..){

在定义泛型类型时只需定义它:

public static <K, V extends BaseEntity<K>> Map<K, V> entityListToIdMap(..) {
公共静态映射entityListToIdMap(..){

为什么地图上没有定义它,但只定义在第一位?因为“第一位”定义泛型类型。
Map
使用它们,但是
K
V
现在都已定义,并且V已被定义为扩展
BaseEntity
。想象一下定义泛型类时的情形-您在类声明中定义了约束,但一旦定义了约束,在类中的任何位置,类型都会被定义定义来保存这些约束。谢谢,明白了!我找不到解释此签名语法的任何来源,只找到它的使用方式。如果您有,请添加它!为什么不在地图中也定义它,但仅在第一位?因为“第一位”定义泛型类型。
Map
使用它们,但是
K
V
现在都已定义,并且V已被定义为扩展
BaseEntity
。想象一下定义泛型类时的情形-您在类声明中定义了约束,但一旦定义了约束,在类中的任何位置,类型都会被定义定义来保存这些约束。谢谢,明白了!我找不到解释此签名语法的任何源代码,只找到它的使用方式。如果您有,请添加它!