简体   繁体   English

Java空指针异常

[英]Java Null Pointer Exception

I attempted to adapt a class I had found on the web for a dynamic array of ints for a dynamic array of "Entities," but now I am getting a "NullPointerException." 我试图将我在网络上找到的类用于动态数组ints的动态数组,以用于“实体”的动态数组,但是现在我得到了“ NullPointerException”。

The code raising the exception is: 引发异常的代码是:

public void initialize()
{
    buffer = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
    Entities.put(Entities.getCurrentPos()+1, new Entity(100, 100, Color.green));
    Entities.put(Entities.getCurrentPos()+1, new Entity(400, 400, Color.blue));
}

The relevant parts of DynArrayEntities class: DynArrayEntities类的相关部分:

...

private Entity[] data;  // An array to hold the data.
private int currentpos = 0;

...

public void put(int position, Entity value) {

    if (position >= data.length) {

        int newSize = 2 * data.length;
            if (position >= newSize)
                newSize = 2 * position;
        Entity[] newData = new Entity[newSize];
        System.arraycopy(data, 0, newData, 0, data.length);
        data = newData;
    }

    data[position] = value;
    currentpos++;

}

....

public int getCurrentPos() {
    return currentpos;
}

Thanks in advance for your help! 在此先感谢您的帮助!

...

private Entity[] data= new Entity[0];  // Or some value > 0
...

otherwise data is null the first time you access it in the method. 否则,当您第一次在方法中访问数据时,数据为null。

you're doing 你在做

position >= data.length

before initializing data 在初始化data之前

(Is Entities a field? In that case you should call it entities. See http://java.sun.com/docs/codeconv/ ) (实体是一个字段吗?在这种情况下,您应该将其称为实体。请参见http://java.sun.com/docs/codeconv/

You should tell exactly that on which line the NPE is thrown. 您应该确切地说出NPE是在哪条线上抛出的。 If it's in the initialize() method's second line, then probably the Entities field is null. 如果它位于initialize()方法的第二行中,则“ Entities”字段可能为空。 If it's in the put() method, then probably it's because the data field is null. 如果在put()方法中,则可能是因为数据字段为null。

Are you doing this just as a learning exercise? 您是在做学习练习吗? If not, why not use java.util.Vector , which provides a dynamic array for any Object ? 如果不是,为什么不使用java.util.Vector ,它为任何Object提供动态数组?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM