使用 GWT ToolBase 進行引數處理
如果你想解析更復雜的命令列引數,例如使用可選引數,那麼最好使用谷歌的 GWT 方法。所有類均公開提供:
https://gwt.googlesource.com/gwt/+/2.8.0-beta1/dev/core/src/com/google/gwt/util/tools/ToolBase.java
處理命令列 myprogram -dir "~/Documents" -port 8888
的示例是:
public class MyProgramHandler extends ToolBase {
protected File dir;
protected int port;
// getters for dir and port
...
public MyProgramHandler() {
this.registerHandler(new ArgHandlerDir() {
@Override
public void setDir(File dir) {
this.dir = dir;
}
});
this.registerHandler(new ArgHandlerInt() {
@Override
public String[] getTagArgs() {
return new String[]{"port"};
}
@Override
public void setInt(int value) {
this.port = value;
}
});
}
public static void main(String[] args) {
MyProgramHandler myShell = new MyProgramHandler();
if (myShell.processArgs(args)) {
// main program operation
System.out.println(String.format("port: %d; dir: %s",
myShell.getPort(), myShell.getDir()));
}
System.exit(1);
}
}
ArgHandler
也有一個方法 isRequired()
,可以覆蓋它來說命令列引數是必需的(預設返回是 false
,這樣引數是可選的。