【问题标题】:Java, Exception in thread "main" java.lang.NullPointerException caused due to not initializing an objectJava,由于未初始化对象而导致线程“main”java.lang.NullPointerException 中的异常
【发布时间】:2014-03-02 03:29:36
【问题描述】:

帮我解决这个问题,“线程“主”java.lang.NullPointerException 中的异常” 谢谢

private List< PosibleTerreno> posibles_terrenos;
private List< PosibleTerreno> terrenos_validos;

//-------------------------------

 int cantidad = this.posibles_terrenos.size(); 

        for (int i = 0 ; i < cantidad ; i++)
        {
            if(this.posibles_terrenos.get(i).get_validez() == true)
            {
                this.terrenos_validos.add(this.posibles_terrenos.get(i));
            }
        }

【问题讨论】:

  • 确保你有posibles_terrenos = new ...和相同的terrenos_validos在执行抛出异常之前的某个地方
  • 然后查看异常消息和堆栈跟踪,它们会准确地告诉您它发生在哪个文件的哪一行以及您当时在做什么。
  • 您必须确保 posibles_terrenos 和 terrenos_validos 已正确初始化。
  • 私人名单 posibles_terrenos;私有列表 terrenos_validos;它在“ public class Controlador { ”旁边定义

标签: java nullpointerexception initialization


【解决方案1】:

你有declared这些变量

private List< PosibleTerreno> posibles_terrenos;
private List< PosibleTerreno> terrenos_validos;

但你没有 initialized 他们。您需要按照以下方式做一些事情

private List< PosibleTerreno> posibles_terrenos = new ArrayList<PosibleTerreno>();
private List< PosibleTerreno> terrenos_validos = new ArrayList<PosibleTerreno>();

否则,两个列表都是null,并且试图引用它们的任何函数......甚至没有意义,因为那里没有“他们的”。它们什么都不是。所以尝试这个

int cantidad = this.posibles_terrenos.size(); 

显然会产生NullPointerException

(连续三个同音字+1。)

【讨论】:

    【解决方案2】:

    您需要初始化您的List(s),您可以使用ArrayList 和/或LinkedList 或许与 -

    private List<PosibleTerreno> posibles_terrenos = new ArrayList<PosibleTerreno>();
    private List<PosibleTerreno> terrenos_validos = new LinkedList<PosibleTerreno>();
    

    对于 Java 7 及以上版本,您还可以像这样使用diamond operator -

    private List<PosibleTerreno> posibles_terrenos = new ArrayList<>();
    private List<PosibleTerreno> terrenos_validos = new LinkedList<>();
    

    【讨论】:

      【解决方案3】:

      在执行抛出异常的行之前执行此操作。

      private List< PosibleTerreno> posibles_terrenos = new ArrayList<PosibleTerreno>();
      private List< PosibleTerreno> terrenos_validos = new ArrayList<PosibleTerreno>();
      

      【讨论】:

        猜你喜欢
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-04
        • 2016-02-05
        相关资源
        最近更新 更多