做一些如果列表中包含
问题描述:
类
的两个对象我有一个包含所有实现相同的接口(ICommand的)不同的命令列表。这些命令每个类都包含有关特定命令应该执行的操作的信息。做一些如果列表中包含
我希望能够,如果他们一起出现,告诉如果列表中包含两个spesific命令,并做一些事情。
例如:
List<ICommand> commandList = getCommandList(); // not important how the list is made
伪正在添加的代码了:
if (commandList contains HelpCommand.class && WriteHelpToFileCommand.class)
then do something (write the help to a file)
else do something else (print the help to console)
有人能指出我在正确的方向?
答
您可以使用流API来检查这个。
if(commandList.stream().anyMatch(e -> HelpCommand.class.isInstance(e)) && commandList.stream().anyMatch(e -> WriteHelpToFileCommand.class.isInstance(e))) {
// do something
}
答
使用“的instanceof”操作符来检查,如果你的列表元素都属于HelpCommand和/或WriteHelpToFileCommand的。
它很好地描述here
+0
我想检查此无需经过整个列表循环。在这种情况下,我必须遍历列表两次:第一次检查列表是否包含命令,另一次是实际运行命令。 –
我通过改变一些系统设计完成了完全不同的事情。 Java 8流是完美的搭配。谢谢! –