Существует также простое решение для «итерации» Collection
и удаления каждого элемента.
List<String> list = new ArrayList<>();
//Fill the list
Он просто соглашается на цикл, пока список не будет пустым, и на каждой итерации мы удалим первый элемент с remove(0)
.
while(!list.isEmpty()){
String s = list.remove(0);
// do you thing
}
Я не считаю, что это улучшилось по сравнению с Iterator
, он все еще должен иметь изменяемый список, но мне нравится простота этого решения .
Это потому, что Shape
не обладает этими свойствами. Сначала вам нужно привести к определенному типу или сделать shapeFactory
универсальным.
void main() {
var s=shapeFactory('square') as Square;
print(s.area);
print(s.side);
var c= shapeFactory('circle') as Circle;
print(c.area);
print(c.radius);
}
или
T shapeFactory<T extends Shape>(String type){
if(type=='circle') return Circle(2) as T;
if(type=='square') return Square(2) as T;
throw 'Can\'t create $type.';
}
void main() {
var s=shapeFactory<Square>('square');
print(s.area);
print(s.side);
var c= shapeFactory<Circle>('circle');
print(c.area);
print(c.radius);
}