If what you want is to do some form of functional programming (which is what looks more likely to me), then you can implement it as:
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
}
};
That would work if you want to do something really generic. However, my preferred alternative corresponds to code much simpler, clearer, and manageable:
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
}
};