Java - 使用不同变量类型的值的参数调用方法

时间:2013-11-08 23:15:25

标签: java variables methods parameters

我有一堆变量声明为2D数组:

int[][] array1 = {{}};
int[][] array2 = {{}};
etc..

我正在使用一个方法来调用另一个方法,其中一个变量作为带有开关的参数:

public void invokeMethod(){
switch(variableNumber){
    case 1: method(piece1);
    break;
    case 2: method(piece2);
    break;
    etc..
  }
}

这对于解决这个问题感觉就像一种非常愚蠢的方式,是否有更聪明的解决方案?也许将变量存储在数组中?如果我面对成千上万的2D数组,我想做的是使用不同数据类型的变量值调用该方法,如下所示:

String arrayToBeInvokedWith = "array1";

method(arrayToBeInvokedWith){
}

(是的,我知道这太简单了,但你可以从中得到这个想法)

是否有类似的解决方案?任何反馈都非常感谢。

编辑:所有阵列都有相同的大小。

2 个答案:

答案 0 :(得分:0)

而不是声明一堆单独的数组......

编写一个封装二维数组实例的类。

如果您使用类型为特殊数组类的泛型集合,则可以将数组的所有实例放入单个集合中。

然后,当您需要对阵列进行操作时,您可以遍历集合。

或者,如果具有与每个2D数组对象关联的特定标识很重要,则将标识关联为HashMap中的对象键。然后,当您需要对任何数组进行操作时,可以使用其键从地图中检索它。

取代

public void invokeMethod(){
    switch(variableNumber){
        case 1: method(piece1);
            break;
        case 2: method(piece2);
            break;
        :
        :
    }
}

你可以简单地使用像

这样的东西
public <T extends MyArrayClass> void invokeMethod(String arrKey, HashMap<String,T>
        arrays) {
    T my2dArray = arrays.get(arrKey);
    method(my2dArray);
    :
    :
}

当遇到像你这样的问题时,解决方案通常是创建一个代表数据抽象的新类型。

答案 1 :(得分:0)

你真的需要使用数组吗?您可以使用HashMap存储引用一个数组的键。要获得一个数组,只需传递一个数组的键即可获得它。

HashMap<String, int[]> hashMap = new HashMap<String, int[]>();

int array1[] = {1, 2};
int array2[] = {2, 3};
int array3[] = {3, 4};

hashMap.put("array1", array1);
hashMap.put("array2", array2);
hashMap.put("array3", array3);

int arrayWanted[] = hashMap.get("array2");