如果列表包含两个类对象,请执行某些操作

时间:2017-09-05 14:36:03

标签: java list

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

有人能指出我正确的方向吗?

2 个答案:

答案 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
}