1.场景
在对接外部系统时,有时候会提供一个Object的对象,这个对象会根据不同的类型传递不同的内容。例如下面的例子:
下图中的data
根据eventType
不同,信息也不一样。
这时,我们就需要根据eventType
映射不同的类型。
1.枚举
import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.stream.Stream;
/**
* <p> 事件类型 </p>
*
* @author hongtool
* @date 2023/3/1
*/
@Getter
@AllArgsConstructor
public enum EventTypeEnum {
DEFAULT("") {
@Override
public <E extends EventBaseData> E changeData(Object data) {
return null;
}
},
S1("1") {
@Override
public EventData1 changeData(Object data) {
return JSONUtil.toBean(JSONUtil.toJsonStr(data), EventData1.class);
}
},
S2("2") {
@Override
public EventData2 changeData(Object<