Java,由于未初始化对象而导致的线程“main”java.lang.NullPointerException中的异常

时间:2014-03-02 03:29:37

标签: java nullpointerexception initialization

帮助我,“线程中的异常”主“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));
            }
        }

3 个答案:

答案 0 :(得分:5)

您有 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。)

答案 1 :(得分:3)

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

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

使用Java 7及更高版本,您也可以像{ - 3}}一样使用

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

答案 2 :(得分:2)

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

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