【问题标题】:convert Collection<MyType> to Collection<Object>将 Collection<MyType> 转换为 Collection<Object>
【发布时间】:2012-02-08 20:20:06
【问题描述】:

我有一个具有以下构造函数的类:

public UniqueField(Collection<Object> items) {
      this.items=items;
}

Collection&lt;Object&gt; 背后的想法是我可以使用Collection&lt;OtherType&gt;

做的时候:

Collection<OtherType> collection=... 
new UniqueField(collection);

我收到无效参数的编译错误。我该如何解决这个问题?

【问题讨论】:

    标签: java generics


    【解决方案1】:

    你必须改用这个

    public UniqueField(Collection<? extends Object> items) {
          this.items=items;
    }
    

    或 ?因为它等于“? extends Object”

    public UniqueField(Collection<?> items) {
          this.items=items;
    }
    

    原因可以看here

    【讨论】:

      【解决方案2】:

      你可以使用:

      public UniqueField(Collection<?> items) {
            this.items=items;
      }
      

      或:

      public UniqueField(Collection<? super OtherType> items) {
            this.items=items;
      }
      

      或者简单地说:

      public UniqueField(Collection<OtherType> items) {
        this.items=items;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 1970-01-01
        相关资源
        最近更新 更多