Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
Lombok @SuperBuilder en clase abstracta con error de causa genérica: tipos incompatibles

Tengo clase abstracta con tipo genérico. tiene un método toBuilder abstracto como se sugiere aquí: ¿Usar la anotación Lombok @SuperBuilder con toBuilder en una clase abstracta?

aquí está la clase abstracta:

 @Data @SuperBuilder(toBuilder = true) public abstract class TenantConfItem<T extends DeepCloneable<T>> { private final URN urn; private final Long version; private final T configData; public abstract TenantConfItemBuilder<T, ?, ?> toBuilder(); public TenantConfItem<T> copy() { return this.toBuilder().build(); } }

el subtipo:

 @SuperBuilder(toBuilder = true) @EqualsAndHashCode(callSuper = true) public class PointsExpirationByEarnedDatePolicy extends TenantConfItem<ExpirationByEarnedDate> implements Singleton { }

aquí estoy usando su constructor:

 val policyBuilder = PointsExpirationByEarnedDatePolicy.builder() .version(0L) .configData(new ExpirationByEarnedDate(retentionDays));

pero me sale un error para los configData:

 error: incompatible types: CAP#1 cannot be converted to ? .configData(new ExpirationByEarnedDate(retentionDays)); ^ where CAP#1,CAP#2 are fresh type-variables: CAP#1 extends PointsExpirationByEarnedDatePolicyBuilder<CAP#2,CAP#1> from capture of ? CAP#2 extends PointsExpirationByEarnedDatePolicy from capture of ?

Supongo que se debe a que el generador principal tiene 3 argumentos con el genérico ( TenantConfItemBuilder<T, ?, ?> ) y el secundario tiene 2 ( PointsExpirationByEarnedDatePolicyBuilder<?, ?> ). ¿Alguna idea para solucionarlo?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

@SuperBuilder(toBuilder=true) admite clases genéricas y refina el parámetro de tipo de la superclase en la subclase. Entonces sus clases y sus anotaciones están bien.

Sin embargo, lombok a veces tiene problemas para inferir el tipo correcto de val , especialmente cuando se trata de parámetros de tipo.

La solución es reemplazar val con el tipo real PointsExpirationByEarnedDatePolicyBuilder<?, ?> .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!