Ответ 1
Проблема заключается в том, что каждый метод в OptionBuilder
является статическим, работает в статических полях и возвращает один статический экземпляр. Следовательно, для выполнения методов вам не требуется экземпляр OptionBuilder
. Это не очень хорошо сочетается с естественным желанием объединить вызовы вместе, как вы это сделали.
Нет другого решения, кроме как успокоить компилятор (возможно, отключить предупреждения в вашей среде IDE?) или настроить ваш код следующим образом (непроверенный):
public static final Option job1;
static {
OptionBuilder.hasArg(false);
OptionBuilder.isRequired(false)
OptionBuilder.withDescription("description of job1")
job1 = OptionBuilder.create(JOB1);
}
Было бы лучше, если класс OptionBuilder
был переписан с открытым конструктором без аргументов и только с методами экземпляра, таким образом, как и любой другой строитель. Существует существующий баг в трекер-проблеме commons-cli, подчеркивающий это: https://issues.apache.org/jira/browse/CLI-224
Обновление: мой патч был отправлен в багажник, поэтому новый "правильный" строитель будет доступен в следующей версии commons-cli (v1.3). См. Javadocs здесь.