type parameter method generic data java generics methods parameters parameter-passing

parameter - return class generic java



Pasando int[][] como parĂ¡metro genĂ©rico (2)

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

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

Estoy tratando de pasar una matriz bidimensional, int[][] arr .

No puedo usar func1(arr) , pero puedo usar func2(arr)

¿Puede alguien explicarme cómo funciona esto?


Si usas Integer lugar de int , deberías poder:

  • llamar func1 con Integer[][] arr
  • llamar a func2 con Integer[] arr o Integer[][] arr

T[] representa una matriz de algún objeto genérico. Cualquier tipo de matriz (incluido int[] ) es un objeto. Por lo tanto, int[][] es una T[] válida cuando T = int[] .

Sin embargo, como int no es un objeto, int[][] no es una T[][] válida T[][] .