Last Updated: June 6, 2026
A plain type parameter like <T> is freedom with a price. T can be any reference type, which sounds powerful, but inside the method or class you only get to call methods that exist on Object. You can't ask T for its price, its rating, or whether it compares less than some other T. Bounded type parameters fix that by saying "T can be anything, as long as it's at least a Product," or "T can be anything, as long as it's Comparable to itself." This lesson covers single bounds with extends, multiple bounds, recursive bounds, and how bounds change what you can do inside a generic body.