• [^] # Re: sealed ?

    Posté par . En réponse au journal La plus belle ligne de code. Évalué à 2. Dernière modification le 18 octobre 2023 à 00:02.

    Pas tellement d’accord, j’ai l’impression que c’est plutôt une utilisation du principe de liskov pour implémenter un pseudo type somme en java.

    Comment l'absence de partage de trait pourrait être une utilisation du principe de Liskov ?

    Si j'écris

    sealed interface A {
     record B(int i) extend A {}
     record C(long l) extend A {}
    }

    Et si on applique le principe de Liskov, il n'y a pas de propriétés prouvable sur A a appliquer à B ou C. Le behavioural subtyping de la même façon parle d'un comportement défini dans le parent qui doit être respecté dans les enfants.

    Tout le principe du sealed/switch c'est de ne pas faire porter le comportement sur le type. Je suis d'accord pour dire que ce n'est pas un viol du behavioral subtyping ou du principe de Liskov, mais c'est fait en se plaçant hors de leur champ : on retire la propriété prouvable sur le type parent.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll