我为我的项目定义了一个名为Function
. 它只有一种方法,call
,如下所示:
public interface Function {
public void call();
}
在我的 Field 对象中,我有这个:
public class Field {
private Square[][] matrix; //Square is dispensable.
public Field(int rows, int cols) {
matrix = new Square[rows][cols];
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
this.matrix = new Square(i * Square.NORMAL_WIDTH, j * Square.NORMAL_HEIGHT);
}
}
}
}
它运行良好,并且类似于 JavaScript,但我无法将注意力转移到它身上。但考虑到我想开发这种方法:
public void each(Function f){
int rows = matrix.length;
for(int i = 0; i < rows; i++){
int cols = matrix[i].length;
for(int j = 0; j < cols; j++){
f.call();
}
}
}
它将某些代码(在本例中为 Function 实现)附加到矩阵的每个元素。这样,我可以访问它的属性。但是矩阵的每个对象都是正方形。我怎样才能访问它?我可以将它传递给函数,
//making an small alteration to the parameter.
public interface Function {
public void call(Square square);
}
public void each(Function f){
int rows = matrix.length;
for(int i = 0; i < rows; i++){
int cols = matrix[i].length;
for(int j = 0; j < cols; j++){
f.call(matrix[i][j]);
}
}
}
但是,我仍然会被困在这种Square
类型上。我可以使用泛型类型,也许?