【问题标题】:generic array with wildcard cause error带有通配符的通用数组导致错误
【发布时间】:2014-10-18 06:05:10
【问题描述】:

我想用 String 类型创建 JComboBox,但将它放在一个数组中,所以我对数组使用通配符,对单个元素使用 String:

JComboBox<?>[] combos=new JComboBox<?>[10];
...
combos[i]=new JComboBox<String>();

与 DefaultComboBoxModels 相同:

DefaultComboBoxModel<?>[] comboModels=new DefaultComboBoxModel<?>[10];
...
comboModels[i]=new DefaultComboBoxModel<String>();

将它们分配给彼此:

...
combos[i].setModel(comboModels[i]);

现在给出编译器错误(capture#13-of ?不适用于 capture#14-of ?)。本来期望单个元素设置为 String 并且一切都很好。这是怎么回事,怎么处理? (除了生吃)

【问题讨论】:

    标签: java arrays generics


    【解决方案1】:

    Java 需要确保模型和组合是同一类型。在给定的示例中,一旦类型在擦除后消失,就没有办法做到这一点。你也可以这样设置model&lt;Integer&gt;为combo&lt;String&gt;。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多