Oi pessoal,
estou com um probleminha no uso da classe HashMap. Eu estava fazendo este exercício de coleções e a compilação do fonte aconteceu sem problemas, porém estão ocorrendo exceções do tipo NullPointerException nos métodos adiciona e recupera da classe Estoque. Eu não entendo por quê o objeto q eu passo fica com a referência em memória com nulo. Eu vou passar o código fonte todo do exercício para que a ajuda a mim seja mais fácil.
import java.io.*;
public class Produto
{
private String codigo;
private String nome;
private String quantidade;
public void Produto ( )
{
nome = new String ( );
codigo = new String ( );
quantidade = new String ( );
} // Produto
public void setNome ( String nome )
{
this.nome = nome;
} // setNome
public void setCodigo ( String codigo )
{
this.codigo = codigo;
} // setCodigo
public void setQuantidade ( String quantidade )
{
this.quantidade = quantidade;
} // setQuantidade
public String getNome ( )
{
return this.nome;
} // getNome
public String getCodigo ( )
{
return this.codigo;
} // getCodigo
public String getQuantidade ( )
{
return this.quantidade;
} // getQuantidade
public boolean equals ( Object obj )
{
boolean flag = false;
if ( obj instanceof Produto )
{
Produto that = ( Produto ) obj;
flag = ( that.codigo.equalsIgnoreCase ( this.codigo ));
} // if
return flag;
} // equals
public int hashCode ( )
{
return ( codigo != null ) ? codigo.hashCode ( ) : 0;
} // hashCode
} // class
import java.util.*;
public class Estoque
{
private HashMap estoque;
public void Estoque ( )
{
estoque = new HashMap ();
} // Estoque
public void adiciona ( Produto produto ) //throws NullPointerException
{
if ( produto != null )
{
String codigo = produto.getCodigo ( );
Produto p = produto;
System.out.println ( produto );
if ( codigo != null )
{
//try
//{
estoque.put ( codigo , p );
//}
//catch ( NullPointerException np)
//{
// np.printStackTrace ( );
//}
} // if
} // if
} // adiciona
public Produto recupera ( String codigo ) //throws NullPointerException
{
Produto produto = null;
if ( codigo != null )
{
if ( estoque.containsKey ( codigo ) )
{
produto = ( Produto ) estoque.get ( codigo );
} // if
} // if
return produto;
} // public
} // class
public class TesteEstoqueProdutos
{
public static void main ( String sharp [ ] )
{
Estoque estoque = new Estoque ( );
Produto produto = new Produto ( );
produto.setNome ( "dinheiro" );
produto.setCodigo ( "abo" );
produto.setQuantidade ( "1000" );
try{
estoque.adiciona ( produto );
} catch ( NullPointerException np){
np.printStackTrace ( );
}
Produto p2 = new Produto ( );
try{
p2 = estoque.recupera ( "abo" );
} catch ( NullPointerException np){
np.printStackTrace ( );
}
System.out.println ( p2.getNome ( ) + " " + p2.getCodigo ( ) + " ");
} // main
} // class