захват ? с помощью построителя Lombok

у меня есть этот класс

public class Hostel extends Hotel<Book> {
}

и этот другой

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(of = { "id" })
@SuperBuilder(toBuilder = true)
@JsonInclude(NON_NULL)
public class Hotel<T>  {
...
}

но когда я сделаю

Hostel hostel = Hostel.builder().build();

Я получил эту ошибку компиляции

 Required type: Hostel
Provided:
capture of ?

person Sandro Rey    schedule 19.02.2020    source источник
comment
Попробуйте аннотировать класс Hostel с помощью построителя. Если вы хотите увидеть вывод ломбока, прочитайте это сообщение SO . Это поможет вам разобраться в проблеме.   -  person byxor    schedule 19.02.2020
comment
Вы также должны добавить аннотацию @SuperBuilder к дочерним классам... посмотрите здесь lombok docs   -  person Imtiaz Shakil Siddique    schedule 19.02.2020


Ответы (1)


У вас нет аннотаций на Хостел. Hostel.builder() действительно маскируется под Hotel.builder().

Таким образом, задание должно быть

final Hotel<?> build = Hostel.builder().build();

Или, точнее (сделать статические методы подлежащими наследованию было ошибкой IMO)

final Hotel<?> build = Hotel.builder().build(); 

Вероятно, вы захотите добавить некоторые аннотации Lombok в дочерний класс.

person Michael    schedule 19.02.2020