美文网首页
3.创建和区分不同的实例

3.创建和区分不同的实例

作者: wingoo | 来源:发表于2017-07-13 11:00 被阅读0次

    在Dagger2中我们通过Moudule中的provide方法(即通过@Provides注解的获取对象实例的方法)获得实例,是根据返回的对象类型进行获取的,有时我们需要获取一个类的多个实例,该如何实现呢?下面开始多个实例的实现。

    1.通过@Named("name")方式进行区分

    @Module
    public class PModule {
        private static final String TAG = "PModule";
    
        @Named("li")
        @Provides
        public Person provideLi() {
            Person li = new Person();
            Log.e(TAG, "provideLi: "+li);
            return li;
        }
    
        @Named("wang")
        @Provides
        public Person provideWang() {
            Person wang = new Person();
            Log.e(TAG, "provideWang: "+wang);
            return wang;
        }
    }
    -------------------------------------------------------------------
       //实例化时
        @Named("li")
        @Inject
        Person li;
    
        @Named("wang")
        @Inject
        Person wang;
    

    2.通过自定义注解(Anotation)的方式

    @Qualifier:其作用是用来区分不同对象的实例,@Named其实就是@Qualifier的一种实现。

    @Qualifier
    @Documented
    @Retention(RUNTIME)
    public @interface Wang {
    }
    
    @Qualifier
    @Documented
    @Retention(RUNTIME)
    public @interface Li {
    }
    //然后
    @Module
    public class PModule {
        private static final String TAG = "PModule";
    
        @Li
        @Provides
        public Person provideLi() {
            Person li = new Person();
            Log.e(TAG, "provideLi: "+li);
            return li;
        }
    
        @Wang
        @Provides
        public Person provideWang() {
            Person wang = new Person();
            Log.e(TAG, "provideWang: "+wang);
            return wang;
        }
    }
    -------------------------------------------------------------------
       //实例化时
        @Li
        @Inject
        Person li;
    
        @Wang
        @Inject
        Person wang;
    

    相关文章

      网友评论

          本文标题:3.创建和区分不同的实例

          本文链接:https://www.haomeiwen.com/subject/ongmhxtx.html