根据the documentation on Oracle's website:
通常,不鼓励行为参数对流操作的副作用,因为它们通常会导致无意识地违反无状态要求以及其他线程安全危害。
这是否包括将流的元素保存到数据库?
想象以下(伪)代码:
public SavedCar saveCar(Car car) {
SavedCar savedCar = this.getDb().save(car);
return savedCar;
}
public List<SavedCars> saveCars(List<Car> cars) {
return cars.stream()
.map(this::saveCar)
.collect(Collectors.toList());
}
此实现有哪些不利影响:
public SavedCar saveCar(Car car) { SavedCar savedCar = this.getDb().save(car); return savedCar; } public List<SavedCars> saveCars(List<Car> cars) { List<SavedCars> savedCars = new ArrayList<>(); for (Cat car : cars) { savedCars.add(this.saveCar(car)); } return savedCars. }
根据Oracle网站上的文档[...]