1.4-Software-Development-Principles

Generics

Bouw jouw eigen Tuple om naar Comparable.

De Tuple<L,R> klasse is relatief simpel om te ontwerpen en gebruiken. Om je een grotere uitdaging te geven willen we nu de ontworpen Tuple aanpassen door de Comparable interface te implementeren.

Dat betekent dat de ene ComparableTuple<L,R> zichzelf kan ordenen ten opzichte van een andere van het zelfde type: compareTo(ComparableTuple<L,R> other).

Om te beginnen veranderen we de eerste regel als volgt: (Tip! Maak dit een nieuwe klasse!)

public ComparableTuple<L,R> implements Comparable<ComparableTuple<L,R>> {
    // ...	
}

Bestudeer de bovenstaande regel zorgvuling en zorg er voor dat je begrijpt waarom hij op deze manier is opgeschreven.

Nadat je dit hebt laten bezinken, wil je de volgende vraag beantwoorden: HOE ga je nou bepalen welke tuple eerder komt dan een andere, als je niet weet wat de L en R types gaan zijn?

Beide types moeten zelf ook minimaal Comparable zijn:

public ComparableTuple<L extends Comparable<L>, R extends Comparable<R>> implements Comparable<ComparableTuple<L,R>> {
    // ...	
}

Merk op dat het laatste deel onveranderd blijft. Maar L en R zijn nu gelimiteerd tot types die zelf ook Comparable implementeren.

Opdracht