Lombok @SuperBuilder обходной путь на IntelliJ - PullRequest
3 голосов
/ 25 апреля 2019

У меня есть класс Product:

   @Data
            

   @SuperBuilder
   public class Product {

        private String name;
        private String manufacturer;

   }

и расширенный класс

@Data
    

@SuperBuilder

public class Frame extends Product{

   private String model;

}

Я пытаюсь создать объект Frame с помощью построителя:

 return Frame.builder()
        
        .name("Frame ABC")
        
        .manufacturer("Manufacturer")
        
        .model("Model 1")
        
        .build();

Я использую IntelliJ 2019.1.1 с плагином lombok, но, к сожалению, компилятор помечает как ошибки методы .name () и .manufacturer ().Я увидел, что проблема https://github.com/mplushnikov/lombok-intellij-plugin/issues/513 открыта, и мне интересно, есть ли обходной путь, чтобы заставить мой код работать.

1 Ответ

3 голосов
/ 05 мая 2019

Нет, пока проблема не будет решена.

Это курица и яйцо. Пока классы с аннотациями @SuperBuilder не скомпилированы, фактические сгенерированные методы компоновщика не существуют. Плагин (когда-то обновленный / исправленный) работает с IDE для этих методов, поэтому, даже если они еще не существуют, он сообщает IDE, какими они будут, когда произойдет компиляция.

Есть способы «обмануть», но все они - хаки - например, вы можете скомпилировать ваши (супер) классы строителей в их собственную jar, а затем импортировать эту jar в ваш проект. Когда вы скомпилировали классы SuperBuilder, они теперь содержат все сгенерированные методы, поэтому IDE увидит реальные методы и, следовательно, предложит их, если вы попытаетесь их использовать. Функционально, но не очень полезно ... если вам нужно обновить аннотированные классы SuperBuilder, теперь вам нужно каждый раз компилировать их, прежде чем изменения станут видимыми. Очевидно, что вы можете создавать задачи сборки, чтобы сделать это для вас, но вы всегда работаете над актуальной проблемой, которая является поддержкой плагинов.

...