Tengo que determinar en tiempo de ejecución si hemos recibido un objeto que representa una operend u operador. ¿Qué es un buen enfoque?

Consideraría un tipo de enumeración.

Boolean te limita a solo dos valores. Si después de lastimar a tu gatito o freír tu teclado en el futuro, decides que es mejor agregar otro tipo, ¿qué sucede?
Además, si tiene un marco de persistencia / serialización que serializa estos objetos, tener “OPERADOR” en su almacén de datos parece mucho más legible que “falso”

La cadena plantea algunos problemas que incluyen:

  • Literales volando alrededor
  • Alguien comparando accidentalmente con ==
  • Mayúsculas y minúsculas
  • Argumentos de comparación ilimitados
  • No puede usar cadenas en sentencias switch en JDKs <7

Además, si está tomando estos objetos como parámetros del servicio web (SOAP WS, por ejemplo), el uso de cadenas deja al desarrollador que consume el servicio preguntándose cuáles son los valores aceptables si no envía una documentación por separado. El uso de una enumeración, por ejemplo, genera una enumeración en su WSDL para que los clientes sepan automáticamente cuáles son los valores aceptables.

La respuesta más simple que brinda la mayor flexibilidad es anular el método toString para devolver lo que es.

-Editar-

Ahora que sé que está utilizando Java, puedo ampliar un poco mi respuesta.

Puede tener dos clases Operador y Operando, las cuales extienden ClassA. Cada clase tiene un método toString que puede anular en Operator para devolver “Operator” y en Operand para devolver “Operand”

More Interesting

¿Por qué una clase Java no muestra 'Ejecutar como' -> 'Aplicación Java' en Eclipse IDE cuando los argumentos del método principal son 'int [] args' en lugar de 'String [] args'?

¿Qué software es realmente bueno para la arquitectura?

¿Cuál es el problema con el argumento de "los desarrolladores del lenguaje X son más fáciles de encontrar" para elegir un lenguaje o plataforma tecnológica?

Como programador, ¿cuáles son sus técnicas favoritas de productividad personal? ¿Qué métodos o hábitos de pensamiento aplica que le ayudan a ser lo más productivo posible al escribir código?

¿Qué haces cuando un ingeniero superior hace una sugerencia evidentemente ridícula?

¿Se está volviendo una moda criticar los productos de software de Microsoft?

¿Es mejor unirse a Cerner como ingeniero de software o Chai Point?

¿Es la herencia una mala práctica en OOP? Muchos lugares que enseñan patrones de diseño dicen que optan por la composición sobre la herencia, pero ¿qué pasa cuando varias clases comparten la lógica de una clase abstracta como en el patrón de diseño del Método de plantilla?

¿Cuáles son sus actividades diarias como ingeniero de DevOps en su proyecto actual?

¿Alguien no le gustó la programación al principio pero luego le gustó después de un tiempo?

¿Es factible la ingeniería inversa para piezas de chapa?

Se da un conjunto de coordenadas de latitud y longitud. ¿Cómo puede saber si estos puntos están en un cuerpo de agua o tierra?

¿Es difícil aprender las pruebas de software?

¿Cuál es la mejor manera de impulsar el desarrollo de software de manera significativa para diversificar la base económica de Maui en los próximos 5 años?

¿Hay errores de aplicación que no vale la pena manejar porque es inútil?