相关疑难解决方法(0)

什么是多级外卡?语法混乱

我正在阅读AngelikaLangerGenericsFaq的多级外卡.我对语法很困惑.该文件说

该类型Collection<Pair<String,?>>是泛型Collection接口的具体实例.它是不同类型对的异构集合.它可以包含类型的元素 Pair<String,Long>,Pair<String,Date>,Pair<String,Object>, Pair<String,String>,等等等等.换句话说, Collection<Pair<String,?>>包含不同类型的形式的混合对Pair<String,?>.

类型 Collection<? extends Pair<String,?>>是通配符参数化类型; 它不代表具体的参数化类型.它代表集合系列中的代表,它是Collection接口的实例化,其中type参数是表单的形式Pair<String,?>.兼容的实例是Collection<Pair<String,Long>>,Collection<Pair<String,String>>, Collection<Pair<String,Object>>,或Collection<Pair<String,?>>.换句话说,我们不知道它所代表的Collection的实例.

根据经验,您必须从上到下阅读多级通配符.

我对以下几点感到困惑.

  1. 有人可以用例子详细说明这三个引号.我完全迷失在语法中
  2. 文件说,para-1是泛型类型的具体实例,而其他不是具体的实例化?那个怎么样?
  3. 自上而下阅读外卡是什么意思?
  4. 多级外卡有什么优势?

有人可以详细说明这些要点.谢谢.

java generics wildcard

5
推荐指数
1
解决办法
278
查看次数

Java HashMap使用通配符嵌套泛型

我正在尝试创建一个hashmap值的hashmap,其中包含自定义类的不同子类的hashsets,如下所示:

HashMap<String, Hashmap<String, HashSet<? extends AttackCard>>> superMap
Run Code Online (Sandbox Code Playgroud)

AttackCard有子类,如:Mage,Assassin,Fighter.superMap中的每个HashMap只会包含一个包含单个子类的HashSets AttackCard.

当我尝试放一个

HashMap<String, HashSet<Assassin>>
Run Code Online (Sandbox Code Playgroud)

进入superMap,我得到一个编译器错误: 编辑错误

下面是发生错误的代码:

public class CardPool {

private HashMap<String, HashMap<String, HashSet<? extends AttackCard>>> attackPool =
    new HashMap<>();

private ArrayList<AuxiliaryCard> auxiliaryPool;

public CardPool() {
(line 24)this.attackPool.put("assassins", new AssassinPool().get());
/*  this.attackPool.put("fighters", new Fighter().getPool());
    this.attackPool.put("mages", new Mage().getPool());
    this.attackPool.put("marksmen", new Marksman().getPool());
    this.attackPool.put("supports", new Support().getPool());
    this.attackPool.put("tanks", new Tank().getPool());
*/  
    this.auxiliaryPool = new ArrayList<>(new AuxiliaryCard().getPool()); 
}
Run Code Online (Sandbox Code Playgroud)

这里有一个AssassinPool get方法的片段:

private HashMap<String, HashSet<Assassin>> pool = new HashMap<>();

    public HashMap<String, …
Run Code Online (Sandbox Code Playgroud)

java generics hashmap

4
推荐指数
1
解决办法
3006
查看次数

标签 统计

generics ×2

java ×2

hashmap ×1

wildcard ×1