Path pathX = new Path.Up();
Path pathY = new Path.Down(n);
Path pathZ = new Path.Fixed(3);
for (int i = 0; i < n; i++) {
if(mat[pathX.pos(i)][pathY.pos(i)][pathZ.pos(i)] != specificValue) {
doStuff();
}
}
哪里
public interface Path {
public int pos(int i);
public static class Up implements Path {
@Override public int pos(int i) { return i; }
}
public static class Down implements Path {
private int n;
public Down(int n) { this.n = n; }
@Override public int pos(int i) { return n - i - 1; }
}
public static class Fixed implements Path {
private int v;
public Down(int v) { this.v = v; }
@Override public int pos(int i) { return v; }
}
我没有使用枚举,因为Down取决于n并且固定在一些值上.