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

广州力yang网站建设微信群发软件

广州力yang网站建设,微信群发软件,wordpress主題改豎文,西安全网优化 西安网站推广下面是一个完整的 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/407175.html

相关文章:

  • 温州做网站多少钱app001推广平台
  • 阿里云网站全部清空怎么做创新营销方式有哪些
  • 自己怎么做直播网站吗seo排名规则
  • 苏州做手机网站广州seo优化排名公司
  • 旅游网站建设推广百度合伙人答题兼职赚钱
  • h5制作工具网站网络优化的流程
  • 做旅游网站的需求分析买外链有用吗
  • 网站建设的公司seo优化视频教程
  • 最好的营销型网站案例网站快速收录付费入口
  • 北京易思腾网站建设国内优秀网站案例
  • 网站的百度推广怎么做的百度收录排名
  • 常德网站建设渠道百度百家自媒体平台注册
  • 手机上怎么制作网站吗百度官网认证免费
  • 网页设计与网站建设区别北京百度推广官网首页
  • dw使用模板做网站教程友链交易平台
  • 怎样做代刷网站长北京sem
  • 做平面设计都在那个网站找免费素材篮网最新消息
  • 网站的建设价格搜索引擎调词平台
  • 禹城网站制作专业的seo外包公司
  • 政府网站建设的概念西安网站建设公司
  • 旅游新闻热点seo外链怎么做能看到效果
  • 下单网站搭建网页设计论文
  • 定制衣柜哪种板材最好做博客的seo技巧
  • 个人网页制作模板田田田田田田田田站长之家seo概况查询
  • 威海哪里可以做网站torrent种子猫
  • 做门票的网站广告投放平台排名
  • 郑州专业的网站建设公司站长之家综合查询工具
  • 南宁企业建站系统软文广告范例大全
  • html设计软件厦门seo排名优化公司
  • 如何把购物网站做成非经营网站网上全网推广