private static boolean matches(char[][] wordSearch, int x, int y, char c) {
    if (x < 0 || x >= wordSearch.length || y < 0 || y >= wordSearch[x].length) {
      return false;
    } else {
      return wordSearch[x][y] == c;
    }
  }
This could be better if you put every check if the same line with the return because
you are going to check in different directions until you find it instead of check the 8
different possibilities.
src/main/java/com/github/pedrovgs/problem48/WordSearch.java