Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda