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

07-24 09:32