The PECS (Producer Extends, Consumer Super) principle is a key concept in Java generics. It helps to decide when to use wildcards with generics in a way that ensures code is both flexible and type-safe. Here's when to prefer and avoid using PECS:
import java.util.ArrayList;
import java.util.List;
// Producer Extends Example
public class FruitBasket {
private List fruits = new ArrayList<>();
public void addFruit(T fruit) {
fruits.add(fruit);
}
public List getFruits() {
return fruits;
}
}
// Consumer Super Example
public void addAllFruits(List super Apple> list) {
list.add(new Apple());
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?