我有一个包含不同命令的列表,这些命令都实现了相同的接口(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
}