我試圖獲取以下命令列配置:
myprogram.jar --op1 --other parameters OK
myprogram.jar --other parameters --op2 OK
myprogram.jar --op1 --op2 should launch ParameterException
我不想設定--operation=[1|2]因為它們是非常不同型別的操作
有沒有辦法獲得這個JCommander?
uj5u.com熱心網友回復:
我認為您正在尋找的是全域驗證引數。
不幸JCommander的是不支持它,帶有簡單的注釋。如其檔案中所示:http: //jcommander.org/#_global_parameter_validation
為此,您需要在決議引數后撰寫自己的驗證器,例如以下示例:
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
class Main {
@Parameter(names = "-op1")
private final boolean op1 = false;
@Parameter(names = "-op2")
private final boolean op2 = false;
public static void main(String[] args) {
Main main = new Main();
JCommander.newBuilder()
.addObject(main)
.build()
.parse(args);
main.run();
}
public void run() {
if (op1 && op2) {
throw new ParameterException("Choose only either op1 or op2, but not both");
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410070.html
標籤:
