0

El siguiente código produce el error NullPointerException al añadir un elemento al ArrayList en el método write de la clase MyClass.

Muchas gracias.

package com.company;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) throws IOException {

        MyClass myObject = new MyClass();
        OutputStream outStream = new FileOutputStream("c:/my-object-data.txt");
        myObject.write(5);
        while (myObject.available() > 0) {
            int data = myObject.read(); //read one int from the input stream
            outStream.write(data); //write that int to the other stream.
        }

        outStream.close();
    }
}

class MyClass {
    private ArrayList<Integer> list;

    public void write(int data) {
        list.add(data);
    }

    public int read() {
        int first = list.get(0);
        list.remove(0);
        return first;
    }

    public int available() {
        return list.size();
    }
}

El compilador devuelve la siguiente traza de errores

Exception in thread "main" java.lang.NullPointerException
at com.company.MyClass.write(Main.java:28)
at com.company.Main.main(Main.java:14)

Por favor, ¿puede alguién explicarme cuál es el motivo?

Muchas gracias!

JohnnyTB
  • 2,592
  • 1
  • 8
  • 17

1 Answers1

1

Prueba cambiando tu clase con este codigo dado que nunca se inicializó el ArrayList:

class MyClass {
    private List<Integer> list = new ArrayList<>();

    public void write(int data) {
        list.add(data);
    }

    public int read() {
        int first = list.get(0);
        list.remove(0);
        return first;
    }

    public int available() {
        return list.size();
    }
}

Espero te ayude

Emiliano Torres
  • 1,064
  • 9
  • 18