首页 > 解决方案 > 如何使用拖动器 2 创建一个带有模拟数据的单例类?

问题描述

嗨,我想知道是否可以使用模拟数据和拖动器创建一个单例

我知道不使用拖动器 2 的标准代码

public class Singleton {
    private Singleton() { }

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    public String getFoo() {
        return "bar";
    }
}

在这里,我知道将带有数据的数组列表放在哪里进行模拟,但是如何用匕首做到这一点,用于将 ArrayList 与数据一起放置的设置函数或类似函数在哪里,以及如何调用。

谢谢

标签: javaandroiddragger

解决方案


您只需要在其中一个模块中添加一个方法并使用 @Singleton 注释对其进行注释。例如:

@Module
public class MyModule {
    @Provides
    @Singleton
    MockData provideMockData() {
       return new MockData(Arrays.asList("A", "B", "C"));
    }

    @Provides
    OtherClass provideOtherClass(MockData mockData) {
       return new OtherClass(mockData);
    }
}

public class MockData {

    private List<String> list;

    public MockData(List<String> list){
        this.list = list;
    }

    public List<String> getList() {
        return list;
    }
}

检查https://google.github.io/dagger/users-guide.html中的“Singletons and Scoped Bindings”部分


推荐阅读