Здравствуйте, у меня есть класс SudokuGenerator, в конструктор которому среди прочего я передаю экземпляр класса SudokuStorage. В методе fillStorage() я создаю экземпляр Sudoku и передаю его в метод sudokuStorage.add(Sudoku), чтобы тот положил его в Mapy. Но дело в том, что любое использование storage в методе add() вызывает InvocationTargetException. Без storage все работает.. что я делаю не так?
public class SudokuGenerator {
private BoardFactory boardFactory;
private CellHider cellHider;
private Sudokustorage sudokuStorage;
// тут геттеры-сеттеры
public SudokuGenerator(BoardFactory boardFactory, CellHider cellHider, SudokuStorage sudokuStorage) {
this.boardFactory = boardFactory;
this.cellHider = cellHider;
this.sudokuStorage = sudokuStorage;
}
public void fillStorage() {
for (int i = 0; i < 100; i++) {
Sudoku sudoku = new Sudoku(cellHider.makeBoardWithHiddenCells(boardFactory.generateBoard()));
sudokuStorage.add(sudoku);
}
}
}
public class SudokuStorage {
private HashMap<Level, ArrayList<Sudoku>> storage;
public HashMap<Level, ArrayList<Sudoku>> getStorage() {
return storage;
}
public void setStorage() { this.storage = storage; }
public SudokuStorage() {
HashMap<Level, ArrayList<Sudoku>> storage = new HashMap<>();
}
public void add(Sudoku sudoku) {
if (storage.containsKey(sudoku.getLevel())) {
ArrayList <Sudoku> list = storage.get(sudoku.getLevel());
list.add(sudoku);
storage.put(sudoku.getLevel(), list);
} else {
ArrayList<Sudoku> list = new ArrayList<>();
list.add(sudoku);
storage.put(sudoku.getLevel(), list);
}
}
}