J'ai ces classes.
class RedSocket {}
class GreenSocket {}
class RedWire {}
class GreenWire {}
J'ai une classe qui utilise 2 types génériques
public class Connection<W, S> {}
où W est le type de Fil & S est de type Socket.
Je suis en train de faire respecter les temps de compilation, vérifiez que le socket et les fils de la même couleur.
J'ai essayé de faire ceci:
public class Connection<W extends Wire & Color, S extends Socket & Color> {}
interface Color {}
interface Red extends Color {}
interface Green extends Color {}
interface Socket {}
interface Wire {}
class RedSocket implements Socket, Red {}
class GreenSocket implements Socket, Green {}
class RedWire implements Wire, Red {}
class GreenWire implements Wire, Green {}
Mais ce n'est pas vraiment de s'assurer que l' Color
utilisé est le même pour les deux types génériques et encore me permet de faire ceci:
public class Connection<W extends Wire & Color, S extends Socket & Color> {
public static void main(String[] args) {
new Connection<RedWire, GreenSocket>();
new Connection<GreenWire, RedSocket>();
}
}
(Le pourquoi de ce phénomène a été expliqué avec brio par Radiodef ici)
Comment puis-je m'assurer de la compilation, vérifiez que le socket et les fils de la même couleur?