Java 是否可以引用作为参数传递的二维数组的行/列的长度而不使用其他参数?

Java 是否可以引用作为参数传递的二维数组的行/列的长度而不使用其他参数?,java,matrix,parameter-passing,multidimensional-array,Java,Matrix,Parameter Passing,Multidimensional Array,假设我们有一个具有以下原型的函数: public static funWithMatrices(int[][] aux) 现在,我们可以做: int i = aux.length; 获取aux中的行数。同样,我们可以这样做: int j = aux[i].length; 仅获取每列的长度。但是有没有更好的方法呢?当然,编译器不可能知道您传递的是一个矩阵,而不是具有不同行/列长度的任意数组,但是有可能以某种方式约束它吗 我更感兴趣的是一些已经内置的东西,而不是用给定的约束创建我自己的matr

假设我们有一个具有以下原型的函数:

public static funWithMatrices(int[][] aux)
现在,我们可以做:

int i = aux.length;
获取
aux
中的
行数。同样,我们可以这样做:

int j = aux[i].length;
仅获取每列的长度。但是有没有更好的方法呢?当然,编译器不可能知道您传递的是一个矩阵,而不是具有不同行/列长度的任意数组,但是有可能以某种方式约束它吗

我更感兴趣的是一些已经内置的东西,而不是用给定的约束创建我自己的
matrix
对象。虽然这很容易做到,但这并不是我想要的


潜行编辑:我意识到也有可能将原型重新定义为类似于
int[][]aux,n,m
,但这也不是我想要的。

您可以利用Java的面向对象编程特性,使用
getColumnLength()
getRowLength()创建自己的矩阵类
已定义的方法,或者更好地查看并利用现有的矩阵API类和函数

还有一个库,可以按如下方式使用:

public static void funWithMatrices(Matrix aux) {
   int rows = aux.rows();
   int columns = aux.columns();

   // do what you want with matrix
   // for example multyply each cell by 2 if it's symmetric matrix

   if (aux.is(Matrices.SYMMETRIC_MATRIX)) {
       Matrix aux2 = aux.transform(Matrices.asMulFunction(2.0));
   }
}

// a caller
funWithMatrices(new Basic2DMatrix(new double[][]{ 
    { 1.0, 2.0 }, 
    { 3.0, 4.0 } 
}));