Cómo configurar un objeto genérico dentro de una clase estándar en Java?

karamazovbros:

Contexto de fondo:

Tengo una clase no genérica que representa un modelo complejo 3D. También tengo una serie de clases geométricas en 3D estándar (esfera, cubo, cuboide) que todos heredan de una clase abstracta por lo que todas las clases hijas heredan los mismos campos y funciones. Por lo tanto las necesidades de cada clase para poder trabajar con la clase del modelo 3D complejo, que no se hereda de la clase abstracta (que no tiene la necesidad de los mismos campos / funciones).

Por eso quiero usar todas las clases hijas con la clase modelo complejo. En concreto, una clase hija puede trabajar con el modelo complejo cuando sea necesario por el usuario, por lo que este se guardará como un campo para esta clase durante el tiempo que el usuario lo necesite. La clase complejo tendrá que acceder a los campos y funciones de estos objetos, así que pensé que el uso de una función genérica podría aplicarse a todo y simplemente la malla 3D clases que tienen los mismos campos / funciones.

Pregunta

Digamos que tengo una clase no genérica donde quiero un campo de esa clase sea un tipo genérico. Quiero que la clase no genérica para ser capaz de manejar una variedad de tipos creados por el usuario.

Quiero un método genérico dentro de la clase no genérica que puede establecer el campo genérico, como esto:

void <T> setGenericObject(T object){
    genericField = object;
}

Sin embargo, no sé cómo declarar el campo genérico correctamente. No quiero crear una clase genérica sólo por un pequeño campo de ella (ya que se trabaja con otros objetos es sólo una pequeña parte de la funcionalidad de esa clase). ¿Cómo iba a declarar correctamente esta variable genericField dentro de mi clase para que esto funcione?

Bonfra04:

Se podría declarar el campo para ser de tipo Objecty establezca su valor en el parámetro. Todas las clases de Java se extienden Objectclase, por lo que se puede utilizar como tipo genérico:

private Object genericObject;

public void setGenericObject(Object object) {
    this.genericObject = object;
}

Entonces, si quieres entonces para invocar un método que hace que no pertenecen a Object, puede hacerlo con un reparto:

public void executeMethod() {
    ((ClassName) this.genericObject).methodName();
}

Sea consciente de ClassCastExceptions, sin embargo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119236&siteId=1
Recomendado
Clasificación