0
votes

Pourquoi Lombok @wly ne fonctionne pas

J'utilise Lombok 1.18.8:

    class test {
        User user = new User().withA(1); // withA is red
}


1 commentaires

Vous devez probablement personnaliser votre IDE. ProjectLombok.org/setup/intellij


3 Réponses :


1
votes

Je pense que vous ne manquez que l'installation du lombok code> sur intelligij code> Double-cliquez sur Lombok.jar Code> et choisissez le Intellij Ide Code>

Exemple de configuration de la procession d'annotation Lombok dans votre Build.Gradle Code>: P >

dependencies {
    compileOnly('org.projectlombok:lombok:1.16.20')
    annotationProcessor 'org.projectlombok:lombok:1.16.20'
    // compile 'org.projectlombok:lombok:1.16.20' <-- this no longer works!
    // other dependencies...
}


6 commentaires

De DOCS : Wither a été renommé avec, et est sorti de manière expérimentale et dans le forfait Core, à Lombok v1.18.10. Mais il utilise 1.18.8, donc je ne pense pas que votre réponse résout la question.


Je pense qu'il manque juste l'installation du Lombok sur Intellij


Non, d'autres annotations de Lombok fonctionnent. Setter, getter par exemple


Utilisez-vous Maven?


@Yousseftounoussi pas de grade.


Je ne sais pas comment configurer la gradle pour le traitement de l'annotation Lombok, mais il semble que @mark Bramnik soit tous les droits



0
votes

ligne compilonly 'org.projecmbok: Lombok: 1.18.8' montre que vous utilisez gradle.

Je pense que le moyen le plus simple de vérifier si cela fonctionne ou non peut simplement exécuter la construction de la grade (sans IDE). Puisque Lombok est un processeur d'annotation, tant que le code passe la compilation, il est censé fonctionner (et les chances sont que cela fonctionne vraiment en fonction de cette ligne).

Vous devriez donc vérifier comment l'IDE (vous n'avez pas spécifié quel IDE il est en fait) s'intègre à Lombok. Peut-être que vous devez activer le "traitement d'annotation" si vous le compilez avec Java Compiler (comme Intellij) et configurez Lombok. Vous installez également le plug-in Lombok pour votre IDE.

Un autre indice utile est d'utiliser Delombok et de voir si le Lombok a en fait généré quelque chose ou non


0 commentaires

2
votes

Lombok 1.18.8: @wHither

Si vous regardez la mise en œuvre réelle de avec () code> Vous remarquerez qu'il s'appuie sur un constructeur ALL-ARGS. Pour faire fonctionner votre exemple, essayez de l'ajouter, ainsi qu'un constructeur de no-arg> p> xxx pré>

La version delombok em> "est:

@With
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int a;
}


4 commentaires

Oui cela fonctionne. Mais je ne comprends pas pourquoi AllargSconstructeur requis. Plus clairement si c'était @Setter


@Valeriyk. Parce que witha () n'est pas un setter. Il re-crée un nouvel utilisateur, toutes les valeurs égales à ceci.


Je comprends. Je pense que ce sera meilleur avec le setter - l'utilisateur public avec (int a) {this.seta (a); renvoyer ceci; }


@Valeriyk. Je crois que la théorie derrière cette fonctionnalité est " Nous voulons un objet avec cette valeur ". Oui, la modification de l'instance actuelle remplirait cette théorie, comme toute instance de ce type serait un candidat pour avoir la valeur. Cependant, avec un setter, nous sommes obligés de modifier une instance pouvant être utilisée ailleurs. L'utilisation d'un setter introduit un effet secondaire qui dépasse la théorie mentionnée ci-dessus, ce qui n'était probablement pas recherché lors de la conception de la fonctionnalité.