0
У меня есть класс JavaJava ArrayList addAll с родовым типом
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>
)
Спасибо за ваш ответ, проблема здесь в том, что метод статичен, поэтому T невозможно. – Morkhitu
@ Morkhitu на самом деле вы этого не понимаете. Типичный тип T применяется, поскольку он является статическим. Посмотрите внимательно. T не является типом возврата. Тип возврата - 'PointCloud'. Вам нужно научиться использовать generics для статических методов. –
@Morkhitu Я отредактировал свой ответ, чтобы решить ваше непонимание с T, используемым в защите класса. –