roboguice - 如何手动创建新对象

时间:2013-05-10 05:01:24

标签: android guice robolectric roboguice

我有一个Customer类,我已经使用@Inject注释注入了它的依赖项。我想在这个类中创建一个返回类的新实例的方法。

class Customer{

    //the DataSource class is annotated with @Singleton
    @Inject protected DataSource dataSource;

    public DataSource getDatasource(){
        return dataSource;
    }

    public Customer newInstance(){
        return new Customer();
    }
}

在我的活动中,我通过@Inject注释注入了一个客户。在onCreate()方法中,我通过调用customer.newInstance()来获取另一个Customer实例,但是当我执行以下操作时,第二个Customer对象的数据源为null。如何通过RoboGuice按需创建新对象,确保它具有依赖性?

if(customer.newInstance().getDatasource() == null){
    //This gets logged
    Log.d("DEBUG", "2nd customer's datasource is null");
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

用以下方法计算出来。

class Customer{

    //the DataSource class is annotated with @Singleton
    @Inject protected DataSource dataSource;

    @Inject protected Injector injector;

    public DataSource getDatasource(){
        return dataSource;
    }

    public Customer newInstance(){
        return injector.getInstance(getClass());
    }
}

答案 1 :(得分:0)

您可以尝试按照以下方式为您的客户类创建新对象

Customer newObject; 

newObject = newInstance();