Class To Record
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con la Java 17 Records specification collegata nella issue ed esamina la Lombok value-to-record implementation referenziata tramite issue #141. Definisci le precondizioni per le classi supportate e le trasformazioni interessate prima di implementarle; il lavoro completato deve includere la ristrutturazione delle classi idonee, l’aggiornamento delle chiamate ai getter e la rimozione dei metodi canonici ove applicabile.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What problem are you trying to solve?
It would be neat to have a capability to convert a class to a record
What precondition(s) should be checked before applying this recipe?
- Java 17+
- Should probably have an arg to specify the type to transform (versus rampantly changing every eligible
classto arecord) - Check for things that would disqualify the
classfrom being arecord, such as:- type must not participate in inheritance
- type must be immutable
- type must not have setters (or maybe make an extra-fancy version of this recipe which can replaces usages of setters with a constructor call) (and/or maybe include a force-override option for this no-setters rule)
- non-static fields must be final or effectively final
- any custom constructor(s) must delegate to another constructor via
this(...)in the first line
Describe the situation before applying the recipe
See Java's specification for Records for context:
https://docs.oracle.com/en/java/javase/17/language/records.html#GUID-6699E26F-4A9B-4393-A08B-1E47D4B2D263
Describe the situation after applying the recipe
- The targeted class should be restructured as a record
- Method invocations of the type's getters should be replaced with record property accessors (eg
getColor()tocolor()) - (bonus points) "canonical"
equals/hashCode/toStringimplementations are removed in favor of the default
Have you considered any alternatives or workarounds?
Any additional context
The implementation for Lombok value to record likely has some useful code to reference/reuse.
This feels like a problem with many weird edge cases (even beyond what's written above), but even a naive implementation which only handles some of those scenarios could probably still be valuable, and the recipe could grow iteratively from there.
Are you interested in contributing this recipe to OpenRewrite?
Maybe; priority TBD
- Lingua principale
- Java
- Stelle
- 156
- Fork
- 130
- Merge medio
- 3g 8h
- PR unite (30g)
- 14
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openrewrite/rewrite-migrate-java
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
openrewrite/rewrite-migrate-java#1246 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
openrewrite/rewrite-migrate-java#1228 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
openrewrite/rewrite-migrate-java#1227 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
openrewrite/rewrite-migrate-java#1146 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
openrewrite/rewrite-migrate-java#1119 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openrewrite/rewrite-migrate-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
beehive-lab/TornadoVM#1151 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
(cbor) `maxStringLength` not consistently checked for chunked (indefinite-length) text valuesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
FasterXML/jackson-dataformats-binary#823 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno