前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dagger2_daggerlimit

Dagger2_daggerlimit

作者头像
全栈程序员站长
发布2022-11-01 11:40:19
3010
发布2022-11-01 11:40:19
举报
文章被收录于专栏:全栈程序员必看

参考 Android_Dagger2篇——从小白最易上手的角度 + 最新dagger.android 都是套路——Dagger2没有想象的那么难

一、无module方式,无参构造

(最简单,但是不常用)

1. 在需要实例化的类中,构造无参构造方法,注解@Inject

必须是无参构造方法

代码语言:javascript
复制
@Inject
public Student() {
}

2. 构造Component接口,有inject方法

代码语言:javascript
复制
@Component
public interface DaggerComponent {
    void inject(MainActivity activity);    //要注入的类
}

3. Make Project (Ctrl+F9)

4. 在需要注入的类中调用

代码语言:javascript
复制
@Inject Student mStudent;
代码语言:javascript
复制
DaggerStudentComponent.create().inject(this);   //该方法执行成功即可以调用对象

二、有module方式

1. 在需要实例化的类中,构造方法注解@Inject

可以带有参数

代码语言:javascript
复制
@Inject
public Student(String name, int age) {
    this.name = name;
    this.age = age;
}

2. 构造Module类

  • 注解@Module
  • 构造一个返回类型为需要注入对象的方法,注解@Provides
代码语言:javascript
复制
@Module
public class StudentModule { 
   
    @Provides
    Student provideStudent() {
        return new Student("张三", 18);
    }
}

3. 构造Component接口,有inject方法

代码语言:javascript
复制
@Component(modules = StudentModule.class)   //与上面唯一的区别在此
public interface StudentComponent {
    void inject(MainActivity activity);
}

4. 在需要注入的类中调用

使用builder方式而不是create注入

代码语言:javascript
复制
@Inject Student mStudent;
代码语言:javascript
复制
DaggerStudentComponent.builder().studentModule(new StudentModule()).build().inject(this);

注意

  1. @Inject只能注解一个构造方法
  2. @Module级别高于@Inject
  3. @Component可以标注接口,也可以标注抽象类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/198872.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、无module方式,无参构造
    • 1. 在需要实例化的类中,构造无参构造方法,注解@Inject
      • 2. 构造Component接口,有inject方法
        • 3. Make Project (Ctrl+F9)
          • 4. 在需要注入的类中调用
          • 二、有module方式
            • 1. 在需要实例化的类中,构造方法注解@Inject
              • 2. 构造Module类
                • 3. 构造Component接口,有inject方法
                  • 4. 在需要注入的类中调用
                  • 注意
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档