Was bedeutet es S erweitert T speichern (S-Entity); im Frühjahrsspeicher?

8

Im Frühjahr Datenprojekt bietet das CrudRepository komplexe CRUD-Funktionalität für die Entity-Klasse, die verwaltet wird.

%Vor%

Im Allgemeinen weiß ich, was "S extends T" bedeutet, d. h. dass S, der Rückgabetyp der Sicherungsoperation, der Subtyp von T sein muss. Warum ist es notwendig, solche wie constraint hinzuzufügen? Ich denke, es wäre in Ordnung, so etwas zu tun:

%Vor%

Wie in

%Vor%

Ich habe gegoogelt, um mehr Hilfe zu finden, und ich habe die folgende Frage zu Stackoverflow selbst herausgefunden, aber es ist nicht wirklich klar für mich:

Spring CrudRepository: warum erfinden Sie ein neues Generikum Typ S

Danke.

    
baudo2048 31.01.2017, 14:59
quelle

1 Antwort

8

Wenn Sie es als

hätten %Vor%

Dann müsste die einzige Variable, der Sie das Ergebnis zuweisen könnten, vom Typ T sein.

Also, wenn du CrudRepository<Animal,AnimalID> repository hast, und du hast

%Vor%

Sie erhalten einen Kompilierungsfehler - Sie können das Ergebnis nicht Dog zuweisen, da es vom Typ T sein muss, in diesem Fall Animal .

Sie müssten prüfen, ob der zurückgegebene Wert tatsächlich vom Typ Dog ist, und wenn ja, in Dog umwandeln, um ihn in savedDog einzufügen.

Mit der Deklaration, so wie sie ist, bedeutet das, dass Sie sie einer Variablen des gleichen Typs wie das ursprüngliche Argument zuweisen können, da die Typauflösung dies zulässt.

In der Erklärung selbst ist nicht angegeben, wie die nicht-tierischen Teile des Hundes, wenn überhaupt, gespeichert werden. Es ist nur möglich, das Ergebnis zurück zu einem Dog zuzuweisen, wenn es ursprünglich ein Dog war.

    
RealSkeptic 31.01.2017, 16:26
quelle