如果您想要做某种形式的函数式编程(这在我看来更有可能),那么您可以将其实现为:
interface Condition {
boolean isTrueFor(Map parameters);
}
public void CellColorChanger(Condition condition) {
Map<String,String> arguments= new HashMap<String,String>() ;
// Populate arguments
arguments.set("row",String.valueOf(specificRow));
arguments.set("column",String.valueOf(specificColumn));
if( condition.isTrueFor(arguments) ) {
// Whatever
}
}
...
Condition myFirstCondition= new Condition() {
boolean isTrueFor(Map parameters) {
int row= Integer.paseInt( parameters.get("row") ) ;
int column= Integer.paseInt( parameters.get("column") ) ;
return row==2 && column==2 || row==6 && column==1 || row==1 && column==2 || row==4 && column==1
}
};
如果您想做一些非常通用的事情,那将起作用。但是,我首选的替代方案对应的代码更简单、更清晰、更易于管理:
interface Row_Column_Condition {
boolean isTrueFor(int row,int column);
}
public void CellColorChanger(Condition condition) {
if( condition.isTrueFor(specificRow,specificColumn) ) {
// Whatever
}
}
...
Row_Column_Condition mySecondCondition= new Row_Column_Condition() {
boolean isTrueFor(int row,int column) {
return row==2 && column==2 || row==6 && column==1 || row==1 && column==2 || row==4 && column==1
}
};