当前位置: 首页 > wzjs >正文

珠海企业网站制作费用青岛网站推广系统

珠海企业网站制作费用,青岛网站推广系统,新网站建设哪家好,网络营销推广的方式都有哪些下面是一个完整的 Dagger 多绑定映射(IntoMap)示例,展示从定义到使用的全过程: Binds注解 Binds:这是 Dagger 中的一个注解,用于声明某个抽象方法的返回类型是接口或抽象类,而方法的参数是其具体实现类!&am…

下面是一个完整的 Dagger 多绑定映射(@IntoMap)示例,展示从定义到使用的全过程:

@Binds注解

@Binds:这是 Dagger 中的一个注解,用于声明某个抽象方法的返回类型是接口或抽象类,而方法的参数是其具体实现类!!!

@IntoMap

@IntoMap :将EngineService放入一个Map<Class<?>, CarService>集合中

1. 定义服务接口和实现

// 服务接口
public interface CarService {void start();
}// 引擎服务实现
public class EngineService implements CarService {@Injectpublic EngineService() {}@Overridepublic void start() {System.out.println("Engine started");}
}// 空调服务实现
public class AirConditioningService implements CarService {@Injectpublic AirConditioningService() {}@Overridepublic void start() {System.out.println("AC cooling started");}
}

2. 创建 Dagger 模块

import dagger.Binds;
import dagger.Module;
import dagger.multibindings.ClassKey;
import dagger.multibindings.IntoMap;@Module
public abstract class CarServiceModule {// 将 EngineService 绑定到 Map<Class, CarService>@Binds :EngineServiceCarService的实现类@IntoMap :EngineService放入一个Map<Class<?>, CarService>集合中@ClassKey(EngineService.class) :EngineService.class作为放入Map的键keyabstract CarService bindEngineService(EngineService impl);// 将 AirConditioningService 绑定到 Map@Binds@IntoMap@ClassKey(AirConditioningService.class)abstract CarService bindAirConditioningService(AirConditioningService impl);
}

3. 创建服务管理器

import javax.inject.Inject;
import java.util.Map;public class ServiceManager {private final Map<Class<?>, CarService> serviceMap;@Injectpublic ServiceManager(Map<Class<?>, CarService> serviceMap) {this.serviceMap = serviceMap;System.out.println("ServiceManager initialized with services: " + serviceMap.keySet());}public CarService getService(Class<?> serviceClass) {return serviceMap.get(serviceClass);}
}

4. 创建 Dagger 组件

import dagger.Component;@Component(modules = CarServiceModule.class)
public interface CarComponent {ServiceManager getServiceManager();// 可选:直接获取MapMap<Class<?>, CarService> getServiceMap();
}

5. 使用示例

public class CarApp {public static void main(String[] args) {// 创建Dagger组件CarComponent component = DaggerCarComponent.create();// 获取服务管理器ServiceManager manager = component.getServiceManager();// 使用服务CarService engine = manager.getService(EngineService.class);engine.start(); // 输出: Engine startedCarService ac = manager.getService(AirConditioningService.class);ac.start(); // 输出: AC cooling started// 直接获取MapMap<Class<?>, CarService> serviceMap = component.getServiceMap();System.out.println("Direct map access: " + serviceMap.keySet());}
}

6. 生成的 Dagger 代码 (简化版)

// DaggerCarComponent.java (自动生成)
public final class DaggerCarComponent implements CarComponent {private final Map<Class<?>, Provider<CarService>> serviceMapProvider;private DaggerCarComponent() {this.serviceMapProvider = createServiceMap();}private Map<Class<?>, Provider<CarService>> createServiceMap() {Map<Class<?>, Provider<CarService>> map = new HashMap<>();// 绑定EngineServiceProvider<EngineService> engineProvider = DoubleCheck.provider(EngineService_Factory.create());map.put(EngineService.class, (Provider)engineProvider);// 绑定AirConditioningServiceProvider<AirConditioningService> acProvider = DoubleCheck.provider(AirConditioningService_Factory.create());map.put(AirConditioningService.class, (Provider)acProvider);return Collections.unmodifiableMap(map);}@Overridepublic ServiceManager getServiceManager() {return new ServiceManager(MapProviderFactory.<Class<?>, CarService>create(serviceMapProvider).get());}@Overridepublic Map<Class<?>, CarService> getServiceMap() {return MapProviderFactory.<Class<?>, CarService>create(serviceMapProvider).get();}
}

输出结果

ServiceManager initialized with services: [class EngineService, class AirConditioningService]
Engine started
AC cooling started
Direct map access: {class EngineService=EngineService@1234, class AirConditioningService=AirConditioningService@5678}
http://www.dtcms.com/wzjs/406090.html

相关文章:

  • dede新闻网站源码带采集seo优化名词解释
  • 做网站的软件去哪里买电商网站建设开发
  • 福建微网站建设在线外链工具
  • 网站做好了如何发布博客网站登录入口
  • 网站底部怎么做需要放些什么搜索引擎优化的内部优化
  • 网站线框图软件世界足球排名
  • 营销型网站建设对比分析如何网站seo
  • 怎么写网站建设的说明semi final
  • 做时时彩网站微信公众号推广网站
  • 研学网站平台建设方案竞价推广账户托管费用
  • 网站正在建设中 色申请百度收录网址
  • html5 网站源代码郑州seo顾问热狗
  • 中山做网站服务好常用网站推广方法及资源
  • 个人是否可以做网站东莞公司seo优化
  • 网站开发的技术手段有哪些痘痘怎么去除有效果
  • wordpress rolesseo网站推广与优化方案
  • 有机蔬菜网站是如何建设山西百度推广开户
  • php用什么做网站服务器广州建网站的公司
  • 上海推广网站百度网盘客服电话
  • 陕西交通建设集团西商分公司网站搜索引擎优化的完整过程
  • 长沙银狐做网站百度客服人工电话24小时
  • 北京北京网站建设短视频营销的优势
  • 大亚湾住房和建设局网站关键词营销优化
  • 做网站平面模板是啥意思广州今日新闻头条新闻
  • 做中东服装有什么网站优化绿松石什么意思
  • 宁夏电力建设工程公司门户网站百度网盘搜索引擎网站
  • wordpress可以做门户网站今日头条最新新闻消息
  • wordpress笔记主题互联网seo是什么意思
  • 做网站添加支付功能要多少钱google chrome官网入口
  • 西宁市网站设计企业百度近日收录查询