NullPointerException: objeto.getClass() e genérico

Pessoal,

a situaçao é a seguinte: tenho um repositório de dados em memória q guarda todos os objetos da minha aplicação, entre eles, Motorista. O repositório tem um método lista, q recebe um objeto, pega a classe dele e retorna uma coleção de tds os objetos da msm classe q ele. Aí é q tá o erro, pq msm com um objeto q tenho certeza q está no repositório ele dé um nullpointerException…Qnd eu uso o segundo método lista(em Relatório), passando Motorista.class como parâmetro, ele funciona.

A classe Acha implementa um método genérico que procura um objeto específico de acordo com a descrição passada na classe PreenchePav.

O que eu não entendo é pq tá dando esse NullPointerException no repositório.

Não sei se vai dar pra entender a situação (o projeto tem muito mais classes). Desculpa a formatação inadequada…

obrigada desde já.

[code]public class Repositorio {

public Repositorio(){
	
}

private static Map<Object,Object> banco = new HashMap<Object, Object>();

public static Collection lista(Object oo) {
Class klass=oo.getClass();//ERRO AQUI! NULLPOINTEREXCEPTION!
Collection c = new ArrayList();
for (Object o : banco.values()) {
if (o.getClass() == klass)
c.add(o);
}
return c;
}
}

public static Collection lista(Class klass) {
Collection c = new ArrayList();
for (Object o : banco.values()) {
if (o.getClass() == klass)
c.add(o);
}
return c;
}//outras coisas
}[/code]

[code]public class Relatorio {

Relatorio(){
}

Collection getC(Achavel o){
	return Repositorio.lista(o);
}

}
Collection getMotoristas(){
return Repositorio.lista(Motorista.class);
}[/code]

[code]public class Acha {

//método genérico
public static <T extends Achavel> void achaT(String coisaProcurada,Achavel coisaSubstituida,String erro)throws IllegalArgumentException{
	for (Object o: new Relatorio().getC(coisaSubstituida)) 
		T m = (T)o;
		if (m.getDescricao().equalsIgnoreCase(coisaProcurada))
			coisaSubstituida = m;
	}
	if (coisaSubstituida==null)
		throw new IllegalArgumentException(erro+" inválido!!");
}

}[/code]

[code]public class PreenchePav{

PreenchePav(){//é ruim botar exceção no construtor???
try{
pedeData();
achaMotorista();
pav = new Pav(dtAbastecimento,motorista, etc…);
salvaObj();
}
catch(IllegalArgumentException e){
System.out.println(e.getMessage());
}
}

//usa o método genérico
//motorista é um Achavel (interface)
void achaMotorista()throws IllegalArgumentException{
System.out.println("Motorista: ");
motoristaProcurado = Keyboard.readString();
Acha.achaT(motoristaProcurado, motorista, “Motorista”);
}[/code]

[code]public class Repositorio {

public Repositorio(){   
       
}   
   
private static Map<Object,Object> banco = new HashMap<Object, Object>();   

public static Collection lista(Object oo) {
Class klass=oo.getClass();//ERRO AQUI! NULLPOINTEREXCEPTION!
Collection c = new ArrayList();
for (Object o : banco.values()) {
if (o.getClass() == klass)
c.add(o);
}
return c;
}
} // SUA CLASSE ESTÁ SENDO FECHADA AQUI E AINDA HÁ CÓDIGO ABAIXO DESTA CHAVE!

public static Collection lista(Class klass) {
Collection c = new ArrayList();
for (Object o : banco.values()) {
if (o.getClass() == klass)
c.add(o);
}
return c;
}//outras coisas
}
[/code]

Coloquei um comentário onde possa estar o problema. Qual IDE vc está usando?

ah nao isso foi vacilo msm na hora de colar o código.
To usando o Eclipse ms nao é esse o problema não…

Vou procurar outra maneira de resolver o problema.

vlw