es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la diferencia entre un constructor y un generador al utilizar genéricos?

Durante la programación en Java, me encontré con el siguiente problema.

Cuando uso el Constructor: El siguiente código funciona bien.

public class Generics<t> {

private T data;

public static <t> Generics<t> of(T data) {
    return new Generics<>(data);
}

public Generics(T data) {
    this.data = data;
}
}

Cuando uso un builder: Se produce un error que indica que el tipo “Object” se proporciona de la siguiente manera.

[Imagen]

Utilicé un builder proporcionado por Project Lombok.

¿Por qué no funciona el genérico del builder en el código anterior?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código de arriba es que el constructor proporcionado por Project Lombok no es capaz de inferir el parámetro de tipo genérico cuando se está utilizando un constructor para crear el objeto. El constructor generalmente se basa en la cadena de métodos para establecer los valores de los campos y, por lo tanto, puede inferir el parámetro de tipo genérico a partir del tipo de retorno de los métodos encadenados. Sin embargo, cuando se utiliza un constructor, el constructor no puede inferir el parámetro de tipo genérico y se establece en Object por defecto. Esto resulta en el error que se muestra en la captura de pantalla. Para resolver este problema, puedes proporcionar un método setter para el campo de datos y utilizar la cadena de métodos en lugar del constructor, o puedes especificar explícitamente el parámetro de tipo al utilizar el constructor.

Comments are closed.