[英]Java invoking command line arguments from the main method to a separate method
[英]What is the Proper Way to Specify “Usage” in Command Line Arguments for Java Main method?
我有一個主方法,可以接受無數個參數。
它的形式為:
if (args.length == 0) {
// This is what I would like to explain better
System.out.println("Usage: selectField1 [...] whereConditionField:Value [...]");
System.exit(0);
}
List<String> selectList = new ArrayList<String>();
BooleanQuery booleanQuery = new BooleanQuery();
for (String arg : args) {
if (arg.contains(":")) {
// Argument is a WHERE condition
String[] keyValue = arg.split(":");
Term term = new Term(keyValue[0], keyValue[1]);
booleanQuery.add(new TermQuery(term), BooleanClause.Occur.MUST);
} else {
// Argument is a SELECT field
selectList.add(arg);
}
}
在用法輸出中解釋此問題的正確方法是什么?
這是一個主觀的問題,因為對於某些人來說容易理解的內容對於其他人來說可能很難。 您可以使用某些linux命令工具的格式,例如:
man cat
輸出:
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]... [FILE]...
[OPTION]...
符號廣泛用於表示幾個(可選)參數。 另外,以命令行utillty zip
為例,在運行時不帶選項將輸出:
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
...
明確地說,您希望zipfile list
易於用戶理解。
就您而言,類似:
Usage: [SELECT_FIELD]... [WHERE_CONDITION_FIELD:VALUE]...
要么
Usage: [field_list] [condition_pair_list]
或任何其他組合...可以肯定的是,如果您希望用戶了解命令行程序的正確用法,那么沒有什么比這更好的了,在一個(或幾個)用法示例旁邊打印格式:
Usage: [SELECT_FIELD]... [WHERE_CONDITION_FIELD:VALUE]...
Example:
java programName field1 condition1:Test field2 conditionName:foo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.