2017-09-05 126 views
3

的兩個對象我有一個包含所有實現相同的接口(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) 

有人能指出我在正確的方向?

回答

2

您可以使用流API來檢查這個。

if(commandList.stream().anyMatch(e -> HelpCommand.class.isInstance(e)) && commandList.stream().anyMatch(e -> WriteHelpToFileCommand.class.isInstance(e))) { 
    // do something 
} 
+1

我通過改變一些系統設計完成了完全不同的事情。 Java 8流是完美的搭配。謝謝! –

2

使用「的instanceof」操作符來檢查,如果你的列表元素都屬於HelpCommand和/或WriteHelpToFileCommand的。

它很好地描述here

+0

我想檢查此無需經過整個列表循環。在這種情況下,我必須遍歷列表兩次:第一次檢查列表是否包含命令,另一次是實際運行命令。 –

相關問題