我有一个包含不同命令的列表,所有命令都实现了相同的接口(ICommand)。这些命令是每个包含特定命令应该执行的操作的信息的类。
我希望能够判断列表是否包含两个特定命令,并且如果它们一起出现则执行某些操作。
例如:
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)
有人能指出我正确的方向吗?
答案 0 :(得分:2)
使用'instanceof'运算符检查您的list元素是否属于HelpCommand类和/或WriteHelpToFileCommand。
很好地描述了here
答案 1 :(得分:2)
您可以使用流API检查此内容。
if(commandList.stream().anyMatch(e -> HelpCommand.class.isInstance(e)) && commandList.stream().anyMatch(e -> WriteHelpToFileCommand.class.isInstance(e))) {
// do something
}