I've got a class which features some ArrayList of BufferedImage, but I've got a serious problem. There is 2 possibilities :
-The ArrayList are all static, and so their getting methods are : this works fine, as the app is launching and the animation is running perfectly. But I can't have differents animations since there are statics.
-The ArrayList (and their getters) are not static : I get a NullPointerException when getDown() is called, which point at the precise moment where this one is called.
Before that, I used simple arrays and I believed that use ArrayLists would solve the problem, but there is no difference.
I don't understand why it's doing that, could you please help me on this matter ?
public class AnimUnit {
private static final int width = 32, height = 32, nbframe = 4;
private ArrayList<BufferedImage> down;
private ArrayList<BufferedImage> up;
private ArrayList<BufferedImage> right;
private ArrayList<BufferedImage> left;
private ArrayList<BufferedImage> idle;
public AnimUnit(SpriteSheet sheet) {
    this.down = new ArrayList<BufferedImage>();
    this.up = new ArrayList<BufferedImage>();
    this.left = new ArrayList<BufferedImage>();
    this.right = new ArrayList<BufferedImage>();
    this.idle = new ArrayList<BufferedImage>();
    for(int i = 0; i < nbframe; i++)
        down.add(sheet.crop((width*2)+2, (height*i)+i, width, height));
    for(int i = 0; i < nbframe; i++) 
        up.add(sheet.crop((width*3)+3, (height*i)+i, width, height));
    for(int i = 0; i < nbframe; i++)
        left.add(sheet.crop((width)+1, (height*i)+i, width, height));
    for(int i = 0; i < nbframe; i++)
        right.add(sheet.crop((width*4)+4, (height*i)+i, width, height));
    for(int i = 1; i < nbframe; i++)
        idle.add(sheet.crop(0, (height*i)+i, width, height));
}
public static int getWidth() {
    return width;
}
public static int getHeight() {
    return height;
}
public ArrayList<BufferedImage> getDown() {
    return down;
}
public ArrayList<BufferedImage> getUp() {
    return up;
}
public ArrayList<BufferedImage> getRight() {
    return right;
}
public ArrayList<BufferedImage> getLeft() {
    return left;
}   
public ArrayList<BufferedImage> getIdle() {
    return idle;
}