Estoy construyendo un simulador que analiza algunos eventos STDIN
y los "ejecuta". Mi experiencia es principalmente programación funcional en estos días, por lo que parecía natural hacer algo como esto:
data Event = Thing1 String Int | Thing2 Int | Thing3 String String Int
Parse :: String -> [Event]
Simulate :: [Event] -> [Result]
donde simular sería
case event
of Thing1 a b => compute for thing one
| Thing2 a => compute for thing two
¿Cuál es la forma idiomática de hacer este tipo de cosas en Java? Buscar en Google me ha señalado en la dirección de las clases anidadas y el patrón de visitante, pero eso parece bastante pesado en mi intento. El borrado de tipo parece estar luchando contra mí, duro. ¿Podrías mostrarme un resumen de cómo se vería correctamente?
Event
tipo conceptualmente equivalente a tener unoInt
y dosMaybe Strings
?