Sometimes, the simplest constructor for a class requires parameters that there is an obvious default choice for:
One such example is: *NonLinearConjugateGradientOptimizer<http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/optim/nonlinear/scalar/gradient/NonLinearConjugateGradientOptimizer.html#NonLinearConjugateGradientOptimizer%28org.apache.commons.math3.optim.nonlinear.scalar.gradient.NonLinearConjugateGradientOptimizer.Formula,%20org.apache.commons.math3.optim.ConvergenceChecker%29> *(NonLinearConjugateGradientOptimizer.Formula<http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/optim/nonlinear/scalar/gradient/NonLinearConjugateGradientOptimizer.Formula.html> updateFormula, ConvergenceChecker<http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/optim/ConvergenceChecker.html> <PointValuePair<http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/optim/PointValuePair.html> > checker) The docs say that *POLAK_RIBIERE<http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/optim/nonlinear/scalar/gradient/NonLinearConjugateGradientOptimizer.Formula.html#POLAK_RIBIERE> * is chosen most often. So, why not have a no parameter constructor that makes default choices? This default constructor will make it easier for users to use these classes. Cheers, -Ajo