我目前正在使用该库Apache Commons CLI 1.3.1来解析命令行参数并控制可执行 jar 中的执行流程。到目前为止,一切都非常简单,文档和示例使用页面也相对全面且有用。
但是,我仍然不清楚如何使用这个库来检测是否存在任何参数或选项。我想检测这种情况,然后打印使用/帮助声明。我通过简单地检查参数数组的长度来解决这个问题,但我想知道库是否有一种方法可以在不检查每个选项是否存在的情况下检测这种情况。
这是我的代码,其中包含解决方法:
public static void main(String[] args)
{
try
{
// create Options object
Options options = new Options();
// add t option
options.addOption("t", false, "display current time");
options.addOption("help", false, "print this message");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if(cmd.hasOption("t")) {
log.debug("Received option t");
// Do something
}
if (args.length <= 0 || cmd.hasOption("help"))
{
// automatically generate the help statement
HelpFormatter formatter = …Run Code Online (Sandbox Code Playgroud) 我已经阅读了几篇有关此问题的 StackOverflow 文章(尤其是这篇文章),由于某种原因,我的情况有所不同。我使用托尼狮子的答案来尝试获取具有不同属性值的对象列表,但没有成功。然而,这确实有效:
List<Task> changedTasksWorking = new List<Task>();
for (int x = 0; x < originalTaskList.Count; x++)
{
if (originalTaskList[x].ActiveFlag != newTaskList[x].ActiveFlag)
{
changedTasksWorking.Add(newTaskList[x]);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我认为会给我带来相同结果的内容。但是,当返回的列表应等于 1 时,它却等于 0。当我翻转属性比较!=并删除内部列表上的 Nor 条件时,我得到了列表中的所有对象:
List<Task> notWork = oL.Where(o => newL.Any(n => o.ActiveFlag != n.ActiveFlag)).ToList();
Run Code Online (Sandbox Code Playgroud)
我感觉我正在服用疯狂的药片。看看上面的一句话应该可以满足我的要求。也许我误解了 LINQ 方法Where和Any是如何交互的。