Передача int [] [] в качестве универсального параметра - PullRequest
0 голосов
/ 18 ноября 2018
public static <T> void func1(T[][] arr) {
    ...
}

public static <T> void func2(T[] arr) {
    ...
}

Я пытаюсь передать двумерный массив, int[][] arr.

Я не могу использовать func1(arr), но я могу использовать func2(arr)

Может кто-нибудь объяснить мне, как это работает?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Если вы используете Integer вместо int, вы сможете:

  • вызов func1 с Integer[][] arr
  • вызов func2 с Integer[] arr или Integer[][] arr
0 голосов
/ 18 ноября 2018

T[] представляет массив некоторого универсального объекта. Любой тип массива (включая int[]) является объектом. Следовательно, int[][] является действительным T[] при T = int[].

Однако, поскольку int не является объектом, int[][] не является допустимым T[][].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...