The “philosophy” of design is that you cannot create an array of type parameters, so you need to instantiate an array with a type that is legal. The only legal types available to the method are the Object or Comparable , and the latter captures more knowledge about the type.
You are allowed to drag the array into the type parameter, and the type of the return value should be like that, so lowering is required.
This is the “philosophy” of necessity.
Lew bloch
source share