2016-04-15 15 views

回答

0

只有註釋是不可能的。但是可以使用註釋和一次檢查。

您可以在註釋中使用forbids來設置選項上的最多一個約束。

@Options(name="-a1", forbids{"-a2", "-a3", /*...*/, "-aN"}) 
T a1; 

@Options(name="-a2", forbids{"-a1", "-a3", /*...*/, "-aN"}) 
T a2; 

/*...*/ 

@Options(name="-aN", forbids{"-a1", "-a2", /*...*/, "-a(N-1)"}) 
T aN; 

而且您可以在您的課程中添加一個支票以在您的選項上設置至少一個約束。

if (a1 == null && a2 == null && /*...*/ && aN == null) { 
    throw new CmdLineException(); 
} 

您可以設置異常消息,與required選項設置爲一致時顯示的消息相同。

+0

現在所有「簡單」的CmdLineException ctors都被棄用。未棄用的要麼需要Throwable,要麼像您提到的那樣,並且需要Localizable。問題是用於重現缺少的必需選項的所有代碼都是包私有的,並依賴於args4j ResourceBundle。你有解決方法嗎? – Novaterata

相關問題