Con cualquiera de estas variantes cumples la restricción de 10 productos, y al mismo tiempo mejoras la legibilidad, la gestión de errores y la mantenibilidad de tu código.
public class CarritoLlenoException extends RuntimeException {
public CarritoLlenoException() {
super("El carrito ya alcanzó su capacidad máxima.");
}
}
// En Carrito:
public void agregarProducto(Producto producto) {
if (productos.size() >= MAX_PRODUCTOS) {
throw new CarritoLlenoException();
}
productos.add(producto);
}
public void agregarProducto(Producto producto) {
final int MAX = 10;
if (productos.size() >= MAX) {
System.out.println("¡Carrito lleno!");
return;
}
productos.add(producto);
}
public class Carrito {
private static final int MAX_PRODUCTOS = 10;
private final List<Producto> productos = new ArrayList<>();
/**
* @return true si pudo agregarse, false si ya estaba lleno.
*/
public boolean agregarProducto(Producto producto) {
if (productos.size() < MAX_PRODUCTOS) {
productos.add(producto);
return true;
}
return false;
}
}
public class Carrito {
private static final int MAX_PRODUCTOS = 10;
private final List<Producto> productos = new ArrayList<>();
/**
* Agrega un producto o lanza IllegalStateException si está lleno.
*/
public void agregarProducto(Producto producto) {
if (productos.size() >= MAX_PRODUCTOS) {
throw new IllegalStateException("Carrito lleno: no se pueden añadir más de "
+ MAX_PRODUCTOS + " productos.");
}
productos.add(producto);
}
}