Java.lang.NullPointerException usando objetos como parametro

Criei um projeto com uma classe “principal” na qual uso duas classes:

Memoria M = new Memoria();
Interface I = new Interface(M); //M (memoria) é parametro para 
                                              //o construtor

Na classe interface tem (mais ou menos) o seguinte código:

public class Interface {

   Memoria M;

   public Interface ( Memoria Me) {
  
      M = Me;
   }

   public Container createContentPane() {

      //aqui vai um monte de botões, area de texto ... Entre eles:
     
      botao1 = new JButton("Imprimir",new ImageIcon("forward.gif"));
      botao1.addActionListener(
         
         new ActionListener() {
     
              public void actionPerformed(ActionEvent event) {
               

                   System.out.println("" + M.getMemoria(0)); 
                   //getMemoria é um método da classe Memoria                    
              
              }
     
         }
                       
      );
   }
}

O problema é que quando eu faço referência a M.getMemoria() dentro do ActionListener, dá uns erros do tipo “java.lang.NullPointerException” Como faço pra resolver isso? Tenho que apresentar esse projeto na faculdade segunda-feira e já tô ficando meio sem tempo.

Valeu!

Ao passar este objeto Memoria, vc antes setou os atributos dele, tipo:
M.setMemoria(parametro)???
ou então vc deverá ter um construtor para o objeto Memória assim:

 Memoria m = new Memoria(parametros de seu objeto);

seu problema está ocorrendo porque a propriedade de seu objeto passado como parametro para Interface está vazio.

Eu alterei ligeiramente o seu exemplo para testar e aqui funcionou redondinho. Talvez seja (arrriscaria: com certeza?) o que o mbjunior disse.

Veja o que eu fiz:

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class Teste extends JFrame {

private Memoria memoria;

public static void main(String[] args) {
JFrame f = new Teste(new Memoria(171));
f.setVisible(true);
}

public Teste(Memoria mem) {

  this.memoria = mem;

  setSize(300, 200);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //aqui vai um monte de botões, area de texto ... Entre eles:

  JButton botao1 = new JButton("Imprimir",new ImageIcon("forward.gif"));
  botao1.addActionListener(

     new ActionListener() {

          public void actionPerformed(ActionEvent event) {


               System.out.println("" + memoria.getMemoria(0));
               //getMemoria é um método da classe Memoria

          }

     }

  );

  JPanel panel = new JPanel();
  panel.add(botao1);

  getContentPane().add(panel, BorderLayout.NORTH);

}
}

class Memoria {
private int m;

public Memoria(int amount) {
    this.m = amount;
}

public int getMemoria(int foo) {
    // ignora foo e retorna m...
    return m;
}

}
[/code]

Rodou sem problemas.

[quote=“dango”]Eu alterei ligeiramente o seu exemplo para testar e aqui funcionou redondinho. Talvez seja (arrriscaria: com certeza?) o que o mbjunior disse.
[/quote]

nada mais reforçou o que eu escrevi…
Quando este objeto for passado como parametro, todas suas propriedades que estiverem vazias e forem requisitadas, lançarão a excessão citada acima.

É isso aí…
Às vezes acontece… vc está testando pra enviar a resposta e alguém já postou… :slight_smile:

Galera, valeu demais!!!
O negócio aqui funcionou beleza!
Tô fazendo uma disciplina de programação orientada a objeto (POO) na faculdade e confesso que sem o guj, os 2 projetos de fim de semestre não teriam saído do papel (a gente tá sem “PROFESSOR”).
“Pagar pau” … só pra quem merece,
Parabéns a todos do fórum!!!

Valeu!