“一盘沙拉”带你入门Dagger2(二)之带参数怎么办

Dell Precision 7920 Tower开机点不亮?别慌,看电源灯闪烁密码快速定位故障(附BIOS恢复指南) 本文详细解析了Dell Precision 7920 Tower工作站开机点不亮时的电源灯闪烁密码,帮助用户快速定位故障。从内存问题到BIOS恢复,再到CPU配置错误,提供了全面的诊断和修复指南,并附有实用的维护建议和工具推荐。 阅读详情

系列文章

“一盘沙拉”带你入门Dagger2(一)之HelloWorld

“一盘沙拉”带你入门Dagger2(二)之带参数怎么办

“一盘沙拉”带你入门Dagger2(三)之@Qualifier

“一盘沙拉”带你入门Dagger2(四)之 @Singleton

“一盘沙拉”带你入门Dagger2(五)之 @Scope

如果被依赖类的构造函数带有参数,要把这个参数的类型也管理起来

现在要在Salad里新加入一个水果Orange,但是Orange的构造函数里需要传入一个Knife来切水果,那么如何注入这个Orange呢?

  1. 新增的两个类

    public class Orange {
        Knife knife;
        public Orange(Knife knife){
            this.knife=knife;
            knife.cut();
            Log.e("TAG", "我是一个桔子");
    
        }
    }
    public class Knife {
        public Knife() {
            Log.e("TAG", "我是一个小刀");
        }
    
        public void cut() {
            Log.e("TAG", "我可以切水果");
    
        }
    }
  2. 修改SaladModule类,让他管理Orange和Knife

    一定要记得引入Knife,因为Salad的依赖Orange依赖了Knife,这是一个依赖链条,要把这个链条上的所有依赖,都管理起来。

    @Module
    public class SaladModule {
      .........
    
        //    引入构造函数带参数的依赖
        @Provides
        public Orange provideOrange(Knife knife) {
            return new Orange(knife);
        }
    
        //   因为Salad所依赖的Orange又依赖了Knife,所以这里也要把Knife管理起来
        //    同理,如果这个Knife还依赖了别的类,也要在这里引入
        @Provides
        public Knife provideKnife() {
            return new Knife();
        }
    }
  3. 修改SaladComponent,同样记得写Knife

    @Component(modules = {SaladModule.class})//指明要在那些Module里寻找依赖
    public interface SaladComponent {
      .........
        //Salad的依赖Orange,而Orange又依赖了Knife,所以要把两者都引入
        //Orange provideOragne(Knife knife);//★注意:这里千万不能带参数,否则报错
    
        Orange provideOragne();
        Knife provideKnife();
    
        //注意:下面的这个方法,表示要将以上的三个依赖注入到某个类中
        //这里我们把上面的三个依赖注入到Salad中
        //因为我们要做沙拉
        void inject(Salad salad);
    
    }
  4. 在目标类Salad里注入依赖

    public class Salad {
    
           .........
    
        @Inject//注入桔子
        Orange orange;
    
        @Inject//注入小刀(如果你想使用小刀对象,这里要注入小刀,否则不用注入)
        Knife knife;
    
        public Salad() {
            // DaggerSaladComponent编译时才会产生这个类,
            // 所以编译前这里报错不要着急(或者现在你先build一下)
            SaladComponent saladComponent = DaggerSaladComponent.create();
            saladComponent.inject(this);//将saladComponent所连接的SaladModule中管理的依赖注入本类中
            makeSalad(pear, banana, saladSauce);
        }
    
        private void makeSalad(Pear pear, Banana banana, SaladSauce saladSauce) {
            Log.e("TAG", "我在搅拌制作水果沙拉");
        }
    }
  5. 测试

    09-01 13:34:35.532 10327-10327/com.demo.dagger2demo2 E/TAG: 我是一个梨
    09-01 13:34:35.533 10327-10327/com.demo.dagger2demo2 E/TAG: 我是一个香蕉
    09-01 13:34:35.533 10327-10327/com.demo.dagger2demo2 E/TAG: 我是沙拉酱
    09-01 13:34:35.534 10327-10327/com.demo.dagger2demo2 E/TAG: 我是一个小刀
    09-01 13:34:35.534 10327-10327/com.demo.dagger2demo2 E/TAG: 我可以切水果
    09-01 13:34:35.534 10327-10327/com.demo.dagger2demo2 E/TAG: 我是一个桔子
    09-01 13:34:35.534 10327-10327/com.demo.dagger2demo2 E/TAG: 我是一个小刀
    09-01 13:34:35.534 10327-10327/com.demo.dagger2demo2 E/TAG: 我在搅拌制作水果沙拉
    
【Leetcode】269.火星词典(Hard) 应用拓扑排序 阅读详情

相关推荐

手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现)

本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。

oo7890的博客 395

Dagger2教程三之构造方法带参数的情况(原)

为了介绍Dagger2的使用,我们搭建了一个Demo来逐步分析,大家可以在这里下载源码(https://github.com/dushaofeng/DaggerDemo.git)。         前面一节《Dagger2教程二之基础使用篇》介绍了Dagger2最简单的使用场景,但是在结尾我们遇到两个困难,即如何在不修改注入类代码的情况下实现注入?如何解决注入类构造方法需要参数的情况?

阿杜的专栏 9699

MATLAB机械臂建模实战:标准D-H法与改进D-H法到底选哪个?(附代码对比)

本文深入解析MATLAB中机械臂建模的标准D-H法与改进D-H法的本质区别,提供详细的代码对比和可视化结果。通过实际案例,帮助读者根据应用场景选择合适方法,并避免常见建模陷阱。特别关注Link函数和SerialLink工具的使用技巧,提升机械臂建模效率。

grape的博客 1121

dagger2 多个参数_如何使用Dagger 2将自定义参数传递给RxWorker

dagger2 多个参数WorkManager is the latest solution by google which is very helpful in running background tasks. Under the hood it uses a combination of JobScheduler (API 23+) and BroadcastReceiver + Alarm...

weixin_26739079的博客 803

关于爱思唯尔官方Latex模版参考文献不是按照引用顺序编号,乱序问题

接下来使用工具打开cas-model2-names.bst文件,全词匹配搜索。其他期刊的模版也是一样的操作,把规定序号的规则的。爱思唯尔给的Latex模版大概文件结构如此。发现是按照第一作者的姓氏的大写字母排序。命令行给注释掉,小写的sort可别注释。

weixin_42748439的博客 5109

大疆Livox Mid-70雷达的使用

一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25

LacyExsale的博客 1万+

Dagger2 最清晰的使用教程

部分内容参考自: [Android]使用Dagger 2依赖注入 - DI介绍(翻译) [Android]使用Dagger 2依赖注入 - API(翻译)为什么网上这么多dagger2教程,我还写了这篇文章。 找了很多Dagger2相关的博客,我看的脑浆炸裂…… Dagger2给我们带来了什么,大多数博文也没有说明 手动写写,加深印象,骗骗粉丝 (手动滑稽) 部分Dagger2的运作机制是我个

Altsuki的博客 3040

Unity性能优化 - 动态图集

Unity 动态图集是 Unity 引擎中用于处理游戏纹理优化的一种技术。本文介绍了什么是动态图集,动态图集的优缺点,以及提供了一套完整的代码供大家参考。

qq_33808037的博客 4840

Dagger2 使用详解

dagger2是解决Android或java中依赖注入的一个类库(DI类库)。

u013163564的专栏 6178

高云FPGA系列教程(8):ARM串口数据接收(中断和轮询方式)

GW1NSR-4C ARM部分共有2个串口外设,都挂载在APB1总线上,最高支持波特率921.6Kbit/s,无奇偶校验位,8位数据位,1位停止位,支持高速测试模式 HSTM(High Speed Test Mode),即每个时钟周期输出1位数据,可以在短时间内传输大量数据。官方手册上没有描述发送和接收缓存FIFO的深度,所以不确定是否支持缓存。

whik1194的博客 1683

ESP32 VSCode开发环境配置

ESP32 VSCode开发环境配置

qq_53529450的博客 507

史上最适合新手的Dagger2教程(四)带参注入

Dagger2系列教程目录: 史上最适合新手的Dagger2教程(一)基本注入 史上最适合新手的Dagger2教程(二)对象注入 史上最适合新手的Dagger2教程(三)模型与单例  史上最适合新手的Dagger2教程(四)带参注入 史上最适合新手的Dagger2教程(五)命名、限定与延时加载 前面我们讲解了构造方法中不带参数的各种注入方式, 这节课,我们来学习构造方法中带参数的对象...

不会前端的安卓不是好JAVA工程师 1611

点云焊缝提取

本文介绍了一个基于PCL库的点云处理流程,包含三个核心模块:MLS平滑处理通过多项式拟合修正点云位置;差异提取通过双向匹配定位源/目标点云的非重叠区域;统计过滤剔除离群噪声点。该流程采用"平滑-筛选-净化"的通用思路,将复杂算法封装为可配置接口,实现了工业级点云预处理。文章重点分析了各模块的原理、PCL接口调用及参数设计逻辑,同时指出参数调优、算法扩展等深入探索方向,展现了PCL在点云处理中的模块化优势与实用价值。

weixin_45196569的博客 250

“一盘沙拉”带你入门Dagger2(一)之HelloWorld

系列文章“一盘沙拉”带你入门Dagger2(一)之HelloWorld“一盘沙拉”带你入门Dagger2(二)之带参数怎么办“一盘沙拉”带你入门Dagger2(三)之@Qualifier“一盘沙拉”带你入门Dagger2(四)之 @Singleton“一盘沙拉”带你入门Dagger2(五)之 @Scope引子使用Dagger2这个框架,可以高效的在Android(java)中实现“依赖注入”。什么是

Android_Study_OK的博客 3733

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

“一盘沙拉”带你入门Dagger2(四)之 @Singleton

@Singleton可以方便地实现单例(全局单例)我们在Salad类里面引入两个Orange的实例,查看他们的内存地址public class Salad { @Inject//桔子1 Orange orange1; @Inject//桔子2 Orange orange2; ... public Salad() { ... Log.e("TA

Android_Study_OK的博客 4816

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

“一盘沙拉”带你入门Dagger2(六)之Component依赖

如果我们有一套做好的煎饼果子(一套齐全的依赖体系,Module、Component),另外一个类需要这套依赖体系的一个对象作为依赖,怎么办,还需要再为这个对象,建立一套新的Module和Component吗 显然是不用的,Component之间是可以依赖的 开始举例子:1. 我们先做一套的依赖体系,这个体系里,依赖的Tomato西红柿Tomato.classpublic class Tomato

Android_Study_OK的博客 4937

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2024年最全“一盘沙拉”带你入门Dagger2(一)之HelloWorld(2),从入门到精通的Android进阶学习笔记整理

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2401_84545468的博客 1258

“一盘沙拉”带你入门Dagger2(三)之@Qualifier

当一个类有两个构造函数时,使用Dagger2时,如何获取指定构造函数new出来的对象 或者说虽然这有一个构造函数,但是这个构造函数new出了两个具有不同属性的对象,我们如何获取到他们,比如Person类,他有一个属性Sex,new了第一个Person,设置sex=“male”,new了第二个Person,设置sex=“female”,我们如何在注入依赖时候,准确注入一个男人或者男人呢

Android_Study_OK的博客 3356

“一盘沙拉”带你入门Dagger2(五)之 @Scope

像上文所说我们要让苹果、桔子使用同一把刀,让香蕉使用另外一把刀,开始吧 在Dagger2中,我们可以通过自定义Scope来实现局部单例。 首先让我们先来定义一个局部作用域:/** * 自定义一个作用域 */ @Scope @Retention(RetentionPolicy.RUNTIME) public @interface KnifeScope { } 在Module里使用 @KnifeS

Android_Study_OK的博客 2528

2024年最全“一盘沙拉”带你入门Dagger2(五)之 ,2024年最新面试时过往经历怎么说

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。后面我就自己整理了一套资料,还别说,真香!资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2401_84545468的博客 1067

2024年最新“一盘沙拉”带你入门Dagger2(五)之 @Scope,互联网大厂面试难度排行

测试:苹果和梨使用了同一个Knife的实例,而香蕉使用了另一把Knife的实例,实现了局部共享实例啦。(img-y3SqCrK3-1715144036890)]测试:内存地址是一样的,证明使用的是同一个实例。下一篇文章,说说Component之间的依赖关系。BAT TMD大厂Android高频面试题。赢取流量/现金/优快云周边激励大奖。Android对标阿里P7学习视频。把Knife注入到苹果、梨里面。Android进阶学习全套手册。

2301_82244718的博客 754

最新“一盘沙拉”带你入门Dagger2(六)之Component依赖,15个经典面试问题

下面是辛苦给大家整理的学习路线网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!.....//这里代码不用动``````

2301_82242351的博客 541

2024年Android最新“一盘沙拉”带你入门Dagger2(六)之Component依赖(1),头条ios面试题

分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记有任何问题,欢迎广大网友一起来交流网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2301_82243523的博客 530

2024年安卓最全“一盘沙拉”带你入门Dagger2(六)之Component依赖(2),2024年最新android面试问题

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2401_84545618的博客 457

2024年安卓最全“一盘沙拉”带你入门Dagger2(一)之HelloWorld(1),2024年最新字节跳动历年Android中高级面试题全收录

分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记有任何问题,欢迎广大网友一起来交流网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2401_84545618的博客 562

Dagger2

看了两天,10+博客吧,有点明白Dagger2了。 Dagger2 是一个DI(Dependency Injection简称DI)框架,中文叫依赖注入。简介 @Inject:有两种作用 第一种:比如在Activity中,用@Inject 作为属性A a;的注解,表示在这里我对a有依赖,你需要给我注入相应的实例,以完成属性a的初始化 第二种:在A中,用@Inject 作为构造方法public

qq_20198405的博客 911
上一篇: “一盘沙拉”带你入门Dagger2(一)之HelloWorld
下一篇: “一盘沙拉”带你入门Dagger2(三)之@Qualifier
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值