2. La généricité - Une solution - 1
Pour pallier ce problème (et d'autres !), on peut utiliser un concept qu'on appelle pompeusement généricité.
Créons le type générique Pair<T,U>
où T
et U
peuvent représenter n'importe quel type :
record Pair<T,U>(T first, U second) {}
Pair<String, Integer> myFirstFunction() { return new Pair<>("A string", 42); }
Pair<Double, String> mySecondFunction() { return new Pair<>(36.7, "Another string"); }
Du côté du code appelant, on sait de quoi on parle !
Pair<String, Integer> myFirstPair = myFirstFunction();
String aString = myFirstPair.first();
Integer fortyTwo = myFirstPair.second();
String nope = myFirstPair.second();