Herencia e identificación de tipos de objetos en Java

Bien, estoy trabajando en un proyecto con la clase abstracta A. Digamos que la clase a1, a2 y a3 todas heredan de la clase A con algunos métodos adicionales que pueden ser únicos para cada subclase. Ahora, estos objetos pueden emparejarse con otros objetos como resultado de la interacción del usuario, pero solo ciertos tipos de objetos pueden emparejarse, es decir, el objeto B solo puede usar a1, el objeto C solo puede usar a2 y un intento del usuario de emparejarlos de lo contrario resulta en decirles que no pueden. Ciertamente me gustaría evitar la instancia, ya que es en gran medida una mala práctica, pero creo que tengo un caso bastante desagradable de flatulencia cerebral en este momento. Pensé en agregar un getType () o algún método de este tipo en la clase principal para devolver una cadena única para cada subclase, pero eso se siente trillado. Agarrar el nombre de la clase se siente casi igual. YO'

Respuesta 1

Si realmente está configurado para no usar instanceof, y no puede, por alguna razón, definir el parámetro para el emparejamiento más allá de la clase de instancia, agregue a la clase abstracta un conjunto de métodos nuevos que hagan una de dos cosas:

a) el método worksWithTypeB, worksWithTypeC, etc., definiéndolos en las subclases según corresponda. Sin embargo, esto es muy parecido a la verificación de tipos.

b) transferir los métodos que serán utilizados por los tipos B y C a la clase abstracta; defínalos normalmente en las clases que pueden usar B y C (así que digamos que el tipo B usa a1.methodB, y el tipo C usa a2.methodC), pero defínalos para lanzar una excepción que en los métodos que no existe de otra manera (entonces a1.methodC arroja una excepción, al igual que a2.methodB).

Aunque, como dijo ilcavero, en este caso no hay nada de malo en la verificación de tipos.

Respuesta: 2

Tengo un repositorio local donde los artefactos se publican como un repositorio compatible con m2. <nombre del sistema de archivos = "local" m2compatible = "true" local = "true"> <ivy pattern = "$ {ivy.local.default.root} / [...

Estamos desarrollando una aplicación Java que proporciona servicios web a través de SSL. Esta aplicación se está ejecutando en el servidor Tomcat. El propósito de los servicios web es insertar, actualizar y seleccionar datos. Entonces bajo la web ...

Soy un principiante en la programación de Java. Quiero establecerme como programador de Java en una aplicación basada en web. Ahora, al comienzo, quiero desarrollar cms y también quiero obtener datos de otro sitio web, así que estoy ...

Me gustaría usar una instancia de base de datos Oracle para ejecutar 11g (o más reciente) en algún servidor remoto (como un patio de recreo para proyectos privados). El propósito de esto sería hacer algunas pruebas / desarrollo con un ...