Transformar tipos de datos mixtos

Crea un método que transforme cada elemento de un arreglo de tipo Object[] de la siguiente manera:

  • Suma 1 a cada Integer par. Deja los enteros impares sin cambios.
  • Convierte a mayúscula el primer carácter de cada String y luego agrega "!".
  • Invierte el valor de cada Boolean.

Ejemplos

Program.changeTypes(new Object[] { "a", 12, true })
➞ new Object[] { "A!", 13, false }

Program.changeTypes(new Object[] { 13, "13", "12", "twelve" })
➞ new Object[] { 13, "13!", "12!", "Twelve!" }

Program.changeTypes(new Object[] { false, "false", "true" })
➞ new Object[] { true, "False!", "True!" }

Notas

  • Las entradas solo contienen enteros, cadenas no vacías y valores booleanos.
  • No hay valores de punto flotante.
  • Ninguna cadena combina letras y dígitos.
  • Aunque el ejercicio parezca fácil, intenta que tu código sea lo más claro y legible posible.