大约有10种不同类型的不同尺寸的2D阵列。例如:
int arr1[][];
float arr2[][];
long arr3[][];
String arr4[][];
在程序执行期间,需要以不同的间隔打印每个阵列。有一个定义print2DArray()
的方法,它将2D数组作为参数计算行数和列数并打印数组。但由于数组具有不同的数据类型,因此需要为每种数据类型编写覆盖方法。
我们可以创建一个变量:String arrName;
并将其传递给方法print2DArray()
并解码String以获取要打印的数组。
例如:
如果方法被调用为:print2DArray(arr2);
和方法定义为:
void print2DArray(String arrName){
**Some code to identify which array is reffered by arrName to print**
}
答案 0 :(得分:1)
为此需要使用java reflection api。
代码有点像这样。
class CustomClass {
int[][] arr1 = new int[][] { { 1, 2, 3, 4 }, { 5, 6, 8, 7 } };
public static void main(String[] args) {
CustomClass c = new CustomClass();
Field[] f = c.getClass().getDeclaredFields();
for (int i = 0; i < f.length; i++) {
if (f[i].getName().equals("arr1")) {
System.out.println(c.arr1[0][0]); // your own logic
} else if (f[i].getName().equals("arr2")) {
System.out.println(c.arr2[0][0]); // your own logic
} else if (f[i].getName().equals("arr3")) {
System.out.println(c.arr3[0][0]); // your own logic
} else if (f[i].getName().equals("arr4")) {
System.out.println(c.arr4[0][0]); // your own logic
}
}
}
}
答案 1 :(得分:0)
我认为你不能原生那样做。虽然有一些简单的解决方法,我选择的是创建一个Map,其中包含与一个键作为数组名称链接的所有数组。这样,在你的print2DArray函数中,你只需要迭代你的地图并找到具有正确键的数组(你在函数中作为参数提供的那个)。
你的地图看起来像这样{{arr1“,arr1},{”arr2“,arr2}等......这显然会迫使你通过在地图中添加它来跟踪每个新创建的数组(反正不是很昂贵)