Skip to content

Curiosidades Java: return

28 julio 2010

Cuando diseñamos y escribimos métodos en Java, tenemos que decidir si el método va a devolver algún valor o si por el contrario el método no va a devolver nada (void). Para devolver un valor o referencia en un método se utiliza la palabra reservada: return. Pero, ¿sabías que aún cuando declaramos el método como void, podemos usar la palabra reservada return dentro del método? Obviamente no podemos devolver nada, no tendría sentido según hemos declarado el método, pero en este caso, return, nos ayudará a terminar de forma abrupta la ejecución de ese método y evitar que siga ejecutando código y consumiendo recursos. Al terminar un método con return, se devuelve el control de ejecución del programa al hilo o método que haya realizado la llamada.

Por ejemplo, supongamos un método muy simple que acepte un parámetro de entrada entero, pero imponiendo que éste debe ser mayor que cero:

void enteroPositivo(int a){
   if (a<=0)
      return;
   else {
      //Código que realiza una tarea intensiva para el procesador
      //...
   }
}

Como véis simplemente estamos haciendo un return, pero no estamos devolviendo nada. De esta forma, si el valor de ‘a’ no es mayor que 0, el método terminará su ejecución sin consumir más tiempo y recursos.

Sin embargo, si hemos declarado el método para que devuelva un valor, debemos devolver algo. Si intentamos utilizar esta sintaxis de return en un método “non-void” obtendremos un error de compilación.

Algunas curiosidades más sobre return:

  • Un array ( [] ) es un tipo de datos perfectamente válido para devolver en un método
  • Los métodos que devuelven una referencia a un objeto, pueden devolver una referencia de cualquier subclase de ese objeto.
  • Los métodos que devuelven una referencia a un interfaz, pueden devolver una referencia de cualquier objeto que implemente ese interfaz
  • Un método que devuelva una referencia a un objeto, puede devolver null.
  • Los métodos que devuelven tipos de datos primitivos, pueden devolver cualquier valor que pueda ser implícitamente convertido al valor que debe devolver. (Por ejemplo un byte puede convertirse implícitamente en un int).
  • Los métodos sobrecargados pueden cambiar el tipo de retorno del método heredado de la superclase, los métodos sobreescritos no pueden. (Excepto en los “covariant returns”) (Reglas básicas de herencia en Java)
Anuncios
One Comment leave one →
  1. 1 junio 2012 16:40

    Exelente artículo…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: