Java将匿名函数赋值给变量的方法
简介
我们在 Java 项目开发的时候,有时候,需要基于不同的配置,来切换不同的服务节点。举个例子,我们在北美,欧洲有服务器。我们初始化 tcp client,保持长连接。
但client 请求到我们 http 服务器,我们根据来访的是 eu,还是 us 用户,切换到不同的 处理流程里面。
今天介绍给大家一种用配置来驱动业务流程的方法。定义配置项
先看代码,代码经过抽象,所以将就着看@Data @NoArgsConstructor @AllArgsConstructor public class CIEConfigVo { String zone; TClientBox tClient; } //定义一个匿名函数的 interface,java 非得需要这个 public interface TClientBox { TcpClient apply(); } private Map allConfig = new HashMap(){{ put("eu", new CIEConfigVo(){{ setZone("EU"); setTClient(new TClientBox() { @Override public TcpClient apply() { //这里可以放你的初始化脚本,比如可以是 spring boot 的 service return tcpClient; } }); put("us", new CIEConfigVo(){{ setZone("US"); setTClient(new TClientBox() { @Override public TcpClient apply() { //这里可以放你的初始化脚本,比如可以是 spring boot 的 service return tcpClient; } }); }}); }}; //具体用的代码来了 private CIEConfigVo getConfigWithZone(String zone) { if(allConfig.containsKey(zone)) { return allConfig.get(zone); } throw new Exception("无法找到正确的配置"); } CIEConfigVo tsmc = getConfigWithZone("us"); //这就获取了客户端对象了 theClient = tsmc.getTClient().apply();
Map 大家应该能看懂,key 是分区信息,value 是配置,配置里面有个 tclient 的字段,存的是匿名对象,匿名对象,也就是其它编程语言中的匿名函数,只不过 java 比较变态,万物都是 class,所以你只能匿名一个 class,然后这个 class 有一个 apply 方法。apply 完了之后,你就能拿到具体的 client。
你想干啥就能干啥了。
匿名函数,依赖于 interface,所以你得先定义一个 interface,你才能赋值变量,设置变量保存你的匿名函数。
自动驾驶运输车跑1500公里比人类快10小时图片来自TuSimple汽车自动驾驶技术,如果得到充分发展,最终有可能比手动驾驶更能减少事故发生的可能性。以目前的技术,在没有十字路口和行人且可以持续匀速行驶的高速公路上,自动驾驶
助力智能消费,北京消费季发放10亿元消费券北京消费季在海淀区中关村启动,在整个活动期间,多家企业将联手发放10亿元智能和信息消费券,从而吸引更多消费者主动进行消费。毕竟现在暑假是智能科技产品消费的高峰期,那么针对暑期,需要
四门更实用2。88万元起售对标宏光MINIEV朋克多多正式开启预售朋克汽车此前公布了美多啦系列的第二款车,朋克多多。朋克多多定位微型电动车,此次公布的预售车型共有三款,分别是靓多多乐多多酷多多,他们的预售价分别为2。883。283。98万元。从预
稳定币和比特币的区别究竟是什么?在区块链领域第一个被应用的数字货币就是比特币,比特币从诞生至今一直都是数字货币中的龙头,即使如此,比特币的波动还是很大的,作为货币其波动性如此之大,是很难进行商品交换的,为了解决这
JavaSE基础第8篇封装和继承private关键字使用private修饰的私有属性只能在它所在类中被访问,如果外界想要访问私有属性,需要提供公有方法,包括用于获取属性值的getXxx()方法和设置属性值的set
大数据的培训中修改MongoDB数据类型的讲解在大数据的培训中,Mongo是一个高性能开源无模式的文档数据库,在很多场景下可以用来替代传统的关系数据库或者键值存储模式。而对于修改mongodb中数据类型,我们是如何做的呢?Mo
征程5发布,地平线打开自动驾驶芯片新格局首先,花一分钟我们来了解一下征程5系列芯片的8个亮点征程5是业界第一款集成自动驾驶和智能交互于一体的全场景整车智能中央计算芯片征程5单颗芯片AI算力最高可达128TOPS,支持16
内外兼修,一款真正的5G旗舰手机,荣耀30Pro你值得拥有哈喽大家好,我是你们的老朋友小生,每天都会给大家更新我的原创内容,今天我们一起来看看荣耀30Pro这部手机吧!外观方面,荣耀30Pro的正面是一块6。57英寸效果相当惊艳的70超曲
5部开启狠降模式的真香旗舰,每一部都极具性价比,值得入手Realme真我GT大师探索版Realme真我GT大师探索版是刚发布不久的新机,也是Realme质感最好的一部手机,12256GB版本的价格为3199元,首发3099元,没想到上市
5G奥运,不一样的科技惊喜5G奥运,不一样的科技惊喜东京奥运已经在北京时间8月8日晚落下帷幕,众所周知受疫情影响观众不能进场,广大体育迷只能开启云追奥运模式。然而5G黑科技的身影充斥在场内外的每个角落,成为
中兴Axon305G评测向真全面屏又迈出一大步近几年各大手机厂商都对全面屏显示有着不同的理解,尤其是刘海屏水滴屏打孔屏我们都颇为熟悉,但是这些解决方案严格意义来说都称不上全面屏幕手机。要保证前置摄像头的功能情况下打造一块完美无