说我有一个事件类,其中包含数据和事件类型(来自远程服务)
public class Event{
String StringData;
Integer IntData;
EvenType eventType;
}
其中EventType是枚举:
public enum EventType{
NEW,UPDATE,DELETE
}
说我有一个隐性事件流的管道,需要根据事件的类型处理事件内部的数据。例如,如果是新事件,则需要保存到db并记录日志;如果是新事件,则需要记录删除事件并将其保存到文件,因此每种事件类型都需要实现自己的行为。
例如:
List<Event> events = ...
events.forEach(e->??? ); //how to process the event based on its type
答案 0 :(得分:2)
通常来说,这可以通过switch
语句来处理。
List<Event> events = ...
events.forEach(e->{
switch (e.eventType) {
case NEW:
// do new thing
break;
case UPDATE:
// do update thing
break;
case DELETE:
// do delete thing
break;
default:
throw UnexpectedEventType(); // just in case
}
});