0

好的,所以这是在黑暗中拍摄,但是......有没有办法重载多维数组访问的参数以接受自定义参数?

//normal array access
myArray[1][2];

//I have a class with two ints and do this
myArray[int2Var.x][int2Var.y];

//is there any way to overload the array arguments so I can do this to access a two dimensional array?
myArray[int2Var];

我目前正在使用 Java,但我也想知道这是否可能。

4

1 回答 1

2

不,Java 不像 C++ 那样支持运算符重载。

如果您有兴趣,这是一个 Java 版本:

public class Test {

    public static class Index
    {
        int x;
        int y;
    }
    public static <T> T get(T[][] array, Index i)
    {
        return array[i.x][i.y];
    }
    public static void main(String[] args)
    {
        Index ix = new Index();
        ix.x = 1;
        ix.y = 2;

        Integer[][] arr = new Integer[3][3];
        for (int i=0; i<3; i++)
            for (int j=0; j<3; j++)
                arr[i][j] = 3*i + j;

        System.out.println(get(arr,ix));
    }
}

方法get(...)接受任何引用类型的数组和索引对象并返回选定的对象。对于基元,您需要get每个基元类型一个专门的方法。

另请注意,java 中的数组语法不是[a,b]but [a][b]

于 2013-01-22T04:20:02.903 回答