参考:
https://wenku.baidu.com/view/3712610bb7daa58da0116c175f0e7cd184251804.html
https://blog.csdn.net/u013343616/article/details/120492725
https://blog.csdn.net/qq_20009015/article/details/103722756
枚举类大家都很熟悉,可以约束变量的类型,也可以将枚举变量映射到不同的方法,以减少令人boring的if/else方法。
那枚举类实例方法中只能写System.out.print吗?
如果我想@Autowired其他的Bean怎么办
网络上搜了下,还真能实现。
枚举类自身无法@Autowired,但是它的静态内部类可以。
@Component public enum OperateCode { SET_RELATION() { @Override void process(MetadataSyncMessage message) { SET_RELATION.service.setRelation(message.getRelation()); } },// DEL_RELATION { @Override void process(MetadataSyncMessage message) { DEL_RELATION.service.deleteRelation(message.getRelation()); } };// private Service service; abstract void process(MetadataSyncMessage message); @Component static class OperateHandler { @Autowired private Service service; @PostConstruct public void init() { OperateCode[] values = OperateCode.values(); for (OperateCode value : values) { value.service = service; } } } }