twty0404 2010-07-06 16:58
浏览 194
已采纳

java 泛型 通配符 Collection,实在不会了

[code="java"]
class CollectionGenFoo {
private T x;

public CollectionGenFoo(T x) {
    this.x = x;
}

public T getX() {
    return x;
}

public void setX(T x) {
    this.x = x;
}

public static void main(String[] args) {
    CollectionGenFoo<ArrayList> listFoo = null;
    listFoo = new CollectionGenFoo<ArrayList>(new ArrayList());
    //正确
    listFoo.setX(listFoo.getX());


    CollectionGenFoo<? extends Collection> listFoo2 = null;
    listFoo2 = new CollectionGenFoo<ArrayList>(new ArrayList());


    //错误
    //listFoo2.setX(listFoo2.getX());
    //也错
    //listFoo2.setX(new ArrayList<String>());


    //listFoo2.setX(/*这里怎么写*/);
}

}
[/code]

  • 写回答

1条回答 默认 最新

  • OPPPPOP 2010-07-06 18:01
    关注

    ? extends XX 只能 把 ? 当成XX 来get
    因为都是XX的子类
    而不能把? 当成XX add 到T 中 或者说你的set
    因为? 代表XX的所有子类

    而 T 在实际用的时候 肯定是明确知道的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译