Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Francisco en 12 de Agosto 2015, 12:33

Título: java.lang.nullPointerException al llamar a método objeto declarado (CU00653B)
Publicado por: Francisco en 12 de Agosto 2015, 12:33
Hola. Todas las repuestas a  dudas sobre este curso de programación, han sido efectivas. Envío otro ejercicio. Un saludo.


 MÉTODO INTERNO Y MÉTODO EXTERNO EN JAVA  (CU00653B)

 Reflexiona y responde a las siguientes preguntas:

a) ¿Es posible llamar a un método externo de un objeto que ha sido declarado pero no creado?
 
No se obtendría ningún resultado porque no tiene código para realizar una función, no compilaría.
   

b) ¿Es posible llamar a un método externo de un objeto “A” que ha sido declarado y creado pero cuyo constructor está vacío?


Sí porque este método puede disponer de una variable local para realizar una determinada operación.

c) Una llamada al método pow de la clase Math que hacemos dentro de un método definido en una clase ¿Es una llamada a un método interno o a un método externo? ¿La llamada al método pow se hace sobre un objeto declarado y creado o no declarado y no creado?

Se trata de una llamada a un método externo.
El método pow está declarado y creado porque realiza una función.
Título: Re: java.lang.nullPointerException al llamar a método objeto declarado (CU00653B)
Publicado por: Alex Rodríguez en 14 de Agosto 2015, 15:16
Hola Francisco, sobre la pregunta a) correcto, no compila porque el objeto no está inicializado. Declararlo es solo una reserva de memoria, pero no se puede invocar algo que no existe. Si lo intentamos hacer podemos obtener un error de tipo java.lang.nullPointerException o similar.

Código: [Seleccionar]
import java.util.ArrayList;
public class Programa3 {
    public static void main(String arg[]) {
        ArrayList<Integer> unaLista;
        unaLista.add(1);
    }
}

Sobre la pregunta b), correcto pero no porque el método pueda disponer de una variable local. Puede tenerla o no tenerla, no es necesario que haya una variable local. En realidad, un constructor puede estar vacío en determinadas circunstancias y esto no supone ningún problema siempre que sepamos lo que hacemos.

La pregunta c) preguntaba si la llamada al método se hacía sobre un objeto declarado y creado. Efectivamente es así, aunque en este caso la declaración y creación la hace automatizadamente java en segundo plano, no la hacemos nosotros.

Saludos