@kcooney , I was thinking a second parameter can be added by those that need it. For example:

{code}
public class MyFilterFactoryParams extends FilterFactoryParams {
  private int arg0;
  private double arg1;

  public MyFilterFactoryParams(String args) {
    this(getFirstParam(args), getSecondParam(args));
  }

  public MyFilterFactoryParams(int arg0, double arg1) {
    this.arg0 = arg0;
    this.arg1 = arg1;
  }

  int getArg0() {
    return arg0;
  }

  double getArg1() {
    return arg1;
  }
}
{code}

Since MyFilterFactory knows it's going to use MyFilterFactoryParams, it can safely perform a downcast.

What did you have in mind?