需要有关代码的意见

时间:2014-03-07 19:27:49

标签: java string nullpointerexception logcat

我知道我已经问过NullPointerException了,但是我发现代码中还有另一个错误,找不到并替代解决它。提前致谢。以下是代码:

03-07 14:11:13.510: E/AndroidRuntime(897): Process: br.com.agendadecontatos, PID: 897
03-07 14:11:13.510: E/AndroidRuntime(897): java.lang.NullPointerException
03-07 14:11:13.510: E/AndroidRuntime(897): at br.com.agendadecontatos.ProvedorDeContatos.toString(ProvedorDeContatos.java:50)

让我说得更清楚,因为有些人说我的问题是无用的或类似的。我是Java编程的新手,真的不知道如何解决这个问题。我希望StackOverflow中有人能理解我的情况。我只是在寻求帮助。说什么在downvoting之前丢失了。感谢。

 @Override
    public String toString() 
    {
          // TODO Auto-generated method stub          
          return Nome + "-"  + Telefones.get(0);   // <- the error is here
          //the error is here
    }

以下是整个代码:

package br.com.agendadecontatos;

import java.util.List;
public class ProvedorDeContatos
{
      private String ID;
      private String Nome;
      private String Sobrenome;
      private List<ProvedorDeContatos> Telefones;     

      public String getID()
      {
          return ID;
    }
    public void setID(String string)
    {
          ID = string;
    }
    public String getNome() 
    {
          return Nome;
    }
    public void setNome(String nome) 
    {
          Nome = nome;
    }     
    public List<ProvedorDeContatos> getTelefones() 
    {
          return Telefones;
    }
    public void setTelefones(List<ProvedorDeContatos> telefones) 
    {
          Telefones = telefones;
    }
    public String getSobrenome() 
    {
          return Sobrenome;
    }
    public void setSobrenome(String sobrenome) 
    {
          Sobrenome = sobrenome;
    }    

    //Metodo sobreescrito para que não aparece o nome do componente na listView

    @Override
    public String toString() 
    {
          // TODO Auto-generated method stub          
          return Nome + "-"  + Telefones.get(0);
    }

    //função criada após o erro com o setTelefones na classe Telefone

    public void setTelefones(String telefones)
    {
        //TODO Auto-generated method stub

    } 
}

1 个答案:

答案 0 :(得分:0)

听起来Telefones变量在您调用get时为空。这就是调用get的尝试失败并抛出异常的原因。

NullPointerException通常意味着某些东西试图调用方法或访问变量为null的字段。一旦找到正在发生的行,请仔细查看该行上使用的变量。在这种情况下,有两个:NomeTelefones

Nome没关系,因为它只是与+的另一个字符串连接,并且这种字符串连接不会抛出NullPointerException。 (t只是将单词“null”放入字符串中。)所以即使Nome为null,也不会导致异常。

离开Telefones.get(0)电话。尝试在空对象上调用方法总是会导致NullPointerException,并且该行上没有任何其他内容可能导致一个,所以它必须是这样。