带有泛型类型的Java arraylist addAll

时间:2017-02-21 02:03:31

标签: java arraylist

我有一个java类

public class PointCloud<T extends Point>
{
    protected ArrayList<T > points = null;

    public ArrayList<T> getPoints()
    {
        return points;
    }

    public void addPoints(ArrayList<T> arrayList)
    {
         this.points.addAll(arrayList);
    }

     public static PointCloud<? extends Point> combine(ArrayList<PointCloud<? extends Point>> pcList)
    {
        PointCloud<? extends Point> combinated_pc = new PointCloud<>();

        for(PointCloud<? extends Point> pc: pcList)
        {
            combinated_pc.addPoints(pc.getPoints());
        }

        return combinated_pc;
    }
}

我的java错误是:

  

中的方法addPoints(ArrayList < capture#8-of ? extends Point>)   类型PointCloud<capture#8-of ? extends Point>不适用于   参数(ArrayList < capture#9-of ? extends Point>

1 个答案:

答案 0 :(得分:0)

在这里,您必须指定正确的泛型类型才能使用addPoints方法。

使用以下内容更改合并..

public static <P extends Point>  PointCloud<P> combine(ArrayList<PointCloud<P>> pcList) { 
    PointCloud<P> combinated_pc = new PointCloud<>(); 
    for(PointCloud<P> pc: pcList) { 
        combinated_pc.addPoints(pc.getPoints()); 
    } 
    return combinated_pc;
}

如果您对组合不同类型的对象感兴趣,则可以修改addPoints方法。