#javascript #java #arrays #reactjs #spring-boot
Вопрос:
Я пытаюсь отправить 2D-массив символов с моего контроллера Spring для реагирования … это работает, когда я использую Arraylist, но не работает с «char [] []».
так что это работает
@GetMapping(value = "/test")
public ArrayList<String> getTest() {
ArrayList<String> arr = new ArrayList<String>();
arr.add("Something");
arr.add("Somehow");
return arr;
и это не работает
@SuppressWarnings("checkstyle:WhitespaceAround")
@GetMapping(value = "/newboard")
public char[][] emptyBoard(char[][] playField) {
for (char y = 0; y < playField.length; y ) {
for (char x = 0; x < playField[y].length; x ) {
playField[y][x] = (' ');
}
}
return playField;
}
Комментарии:
1. хм, а как насчет использования
List<List< Character >>
2. Я пытаюсь использовать лучший и более простой подход, потому что я не хочу менять все методы в своем коде… так как все они используют «Игровое поле как символ[][]» @AlbertoSinigaglia
Ответ №1:
После хорошего исследования я обнаружил, что отправка примитивного типа данных на интерфейс не работает… это ответ на этот вопрос, возможно, не во всех ситуациях, но, по крайней мере, в моем случае это было решением.
вы должны попробовать следующее:
Либо попробуйте использовать типы ссылок =>
@GetMapping(value = "/test")
public ArrayList<String> getTest() {
ArrayList<String> arr = new ArrayList<String>();
arr.add("Something");
arr.add("Somehow");
return arr;
ИЛИ этот подход (от типа {Класс} ) =>
@GetMapping(value = "/test")
public MyModel getTest() {
MyModel myModel = new MyModel();
myModel.setFirstName("Somthing");
myModel.setLastName("Somehow");
GameUpdate u = new GameUpdate();
Player p1 = new Player();
p1.setName("1");
u.setPlayer1(p1);
return myModel;
}
Ответ №2:
Вы можете просто изменить тип возвращаемого значения и таким образом «отлить» возвращаемый объект:
@SuppressWarnings("checkstyle:WhitespaceAround")
@GetMapping(value = "/newboard")
public List<List<Character>> emptyBoard(char[][] playField) {
for (char y = 0; y < playField.length; y ) {
for (char x = 0; x < playField[y].length; x ) {
playField[y][x] = (' ');
}
}
return Arrays.asList(playField)
.stream()
.map(Arrays::asList)
.collect(Collectors.toList());
}
Комментарии:
1. Спасибо за ответ, но => «Список><Список<Символ><Символ>>» этот подход выглядит так же, как (Arraylist<Символ>><Arraylist<символ[]><символ[]>>)… ваше решение может быть полезным, но мне нужно изменить переменную (игровое поле) во всех методах, которые я использовал, и это вызовет много проблем в моем игровом алгоритме.
2. @BasharBoutros нет, вам не нужно ничего менять, вам нужно будет изменить только оператор return в классе контроллера, в котором вы возвращаете матрицу
3. я получил эту ошибку java: не удается найти символ символ: метод asList() расположение: класс java.util.stream. Коллекционеры
4. @BasharBoutros извините, просто опечатка, попробуйте сейчас