首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dagger / Google Auto Factory:处理懒惰和提供字段的混合

Dagger / Google Auto Factory:处理懒惰和提供字段的混合
EN

Stack Overflow用户
提问于 2014-08-28 10:41:41
回答 1查看 859关注 0票数 1

所以我有一个小问题,现在似乎没有一个好的模式来做这样的事情。

代码语言:javascript
复制
public class Person {

   @Lazy<Foo> protected mLazyFoo;

}

@AutoFactory(
   className = "ManFactory"
)
public class Man extends Person {

    Private Hammer mHammer;

    Man(@Provided Hammer hammer) {
       mHammer = hammer;
    }

}

// mLazyFoo is null!!!!!
Man man = ManFactory.create();

我到底该如何处理这种情况呢?现在看来,混合AutoFactory和不依赖于自动工厂的东西是不可能的,或者你必须做一些事情来始终提供一个构造函数,以确保像父类中的所有懒惰组件一样,可以像这个例子一样手动构造。

代码语言:javascript
复制
 public class Person {

       protected Foo mLazyFoo;

       protected Person(Foo foo) {
           mLazyFoo = foo;
       }

    }

    @AutoFactory(
       className = "ManFactory"
    )
    public class Man extends Person {

        Private Hammer mHammer;

        Man(@Provided Hammer hammer, @Provided Foo foo) {
           mHammer = hammer;
           super(foo);
        }

    }

尽管如此,它还是会改变代码的性质。它几乎看起来像是使用惰性和提供者是100%反对使用AutoFactory。

EN

回答 1

Stack Overflow用户

发布于 2015-03-22 02:01:02

我找到了一个适合我的解决方案。在您的模块中,您必须添加:

代码语言:javascript
复制
@Module()
public class CoreModule {
  @Provides @Singleton Lazy<Foo> provideLazyFoo(Lazy<Foo> foo) {
    return foo;
  }
}

有了这个Dagger,它将找到Lazy<Foo>,并且还会在您请求Foo实例时加载它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25539899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档