En los programas de Java, todas las variables se les da un tipo específico e inmutable cuando se declaran en primer lugar. Por lo tanto, si se crea una variable entera llamada "numApples," no se puede cambiar esa variable a un doble o cadena como el programa se está ejecutando. Esta cualidad hace que Java sea un lenguaje "inflexible" y le permite coger una serie de problemas potenciales como el programa se compila en lugar de mientras que el programa se está ejecutando. Uno de los problemas potenciales es una operación que usa tipos incompatibles.
Porque
Hay varios errores diferentes que pueden causar Java para lanzar un error durante la compilación de tipos incompatibles su programa. En el más simple de error, es posible que haya intentado asignar un tipo incompatible para una variable. Por ejemplo, si ha creado una variable entera, no se puede asignar el valor 1.3 a ella. También puede haber tratado de aprobar una variable incompatibles en un método; un método que sólo acepta una matriz de cadenas como argumento no puede aceptar una sola cadena. Este problema también puede ser causada por el uso de una sintaxis incorrecta en una comparación booleana. Si se intenta comprobar si los numApples entero es igual a 1 (numApples == 1), pero omite un signo igual, se le cambio de estado que numApples es igual a 1 (numApples = 1). La primera sentencia se evalúa como un tipo booleano, mientras que la segunda se evalúa como un tipo entero. Si se coloca la segunda sentencia en una función que es necesario un tipo booleano, el programa generará un error tipos incompatibles.
Fundición
Si tiene que pasar una variable a un método que no es compatible con ese tipo particular de variables, es posible que pueda echarlo a otro tipo. Por ejemplo, si un método sólo es compatible con números enteros, pero que desea pasar un doble, se puede convertir temporalmente el doble de un número entero añadiendo "(int)" delante de la doble variable como se le pasa al método. La conversión no alterará la variable almacenada pero puede alterar el valor que se echa. Lanzamiento de un doble que es equivalente a 3,2 a un entero devolverá el número entero 3.
La sobrecarga
Si tiene que pasar diferentes tipos de variables con el mismo método, se puede crear un método sobrecargado. Los métodos sobrecargados son duplicados de un método que tiene el mismo nombre, pero aceptan diferentes argumentos. Por ejemplo, podría crear dos versiones de un método add en la misma clase, uno que acepta dos valores dobles y otra que acepta dos valores de coma flotante. Si se llama a sumar y pasarlo dos valores de coma flotante, el programa se ejecutará automáticamente el método que ha especificado para valores de coma flotante.
Herencia
Cuando se trabaja con tipos avanzados, puede evitar errores tipos incompatibles mediante el establecimiento de un método para aceptar el padre de cualquier tipo que desea pasar en ella. Por ejemplo, si ha creado un método para calcular los metros cuadrados de un edificio, se debe configurar para que acepte un edificio como su argumento:
calculateSquareFootage doble (entrada del edificio)
A continuación, puede pasar en cualquier tipo de datos que hereda el tipo de datos de los edificios, tales como la escuela, la cárcel o el hospital tipo de datos.