Java Language Richiesta di più limiti superiori ("estende A & B")


Esempio

È possibile richiedere un tipo generico per estendere più limiti superiori.

Esempio: vogliamo ordinare una lista di numeri ma Number non implementa Comparable .

public <T extends Number & Comparable<T>> void sortNumbers( List<T> n ) {
  Collections.sort( n );
}

In questo esempio T deve estendere il Number e implementare il Comparable<T> che dovrebbe adattarsi a tutte le implementazioni del numero incorporato "normale" come Integer o BigDecimal ma non si adatta a quelle più esotiche come Striped64 .

Poiché l'ereditarietà multipla non è consentita, è possibile utilizzare al massimo una classe come limite e deve essere la prima elencata. Ad esempio, <T extends Comparable<T> & Number> non è consentito perché Comparable è un'interfaccia e non una classe.