¿Casting e instancia de interfaz casi vacía?

Estoy programando algún tipo de juego de mesa que contiene robots, artículos y demás.

En un momento, necesito obtener el valor de energía de un robot o un elemento que puede tener energía. La forma en que esto se programa es que cada robot y cada elemento que tiene energía tienen una clase EnergyContainer como campo (para evitar la redundancia de código) y una clase de valor de energía.

Ahora, básicamente, llamo a un método evalúe () que recibe un Elemento. Element es una clase abstracta que se extienden robot y elementos. No todos los elementos tienen contenedores de energía. Si es posible, necesito llamar al getEnergyContainer en este elemento, pero solo si es un elemento que lo tiene, por supuesto.

Puedo pensar en un par de soluciones: usar muchas instancias y luego emitir. Entonces, preguntando, por ejemplo, si el elemento es instancia de robot, convierta el elemento en robot y llame a getEnergyContainer en el elemento. Esto tiene la desventaja clara de que necesito hacer esto para cada energía que tenga una subclase de elemento.

La segunda solución es definir una interfaz que contenga solo un método getEnergyContainer y hacer que todas las clases de energía implementen esto. El único propósito de esta interfaz es facilitar el método y estaría casi vacío.

A menos que alguien tenga una mejor idea, ¿cuál es la "mejor" solución? Creo que las interfaces casi vacías se utilizan como interfaces Marker, pero este es un único propósito, por lo que estoy un poco inclinado a ello.

Respuesta 1

Opción A: método public void () {try {// alguna operación que arroja FirstException} catch (FirstException ex) {throw new RuntimeException (ex); } intente {// alguna operación que ...

Estoy revisando un tutorial de Spring Roo y aprendiendo sobre cómo agregar campos a los modelos. Hoy inicié mi computadora y cuando comencé el roo shell en mi terminal me dio este error: Encontré "...

Actualmente estoy tratando de resolver un problema (con suerte) simple, pero supongo que me estoy perdiendo lo obvio. El código de ejemplo autónomo se puede encontrar en gist.github.com Estoy tratando de validar un XML ...

Quiero ejecutar un código después de que se ejecute el objetivo de eclipse del complemento eclipse (eclipse: eclipse). La documentación del complemento eclipse dice que la fase de generación de recursos se ejecuta antes del ...