1

我正在制作一个快速示例以适应 Dagger2,但我一度陷入困境。我有一个班级,我想成为一个单身人士,但 Dagger2 不断给我不同的对象。

这是我的源代码:

单例类

public class SingletonClass {

}

单例组件

@Singleton
@Component(modules = { SingletonModule.class })
public interface SingletonComponent {
    SingletonClass singleton();
}

单例模块

@Module
public class SingletonModule {
    @Provides
    @Singleton
    SingletonClass provideSingletonClass() {
        return new SingletonClass();
    }
}

主要的

public static void main(String[] args) {
    SingletonClass comp = DaggerSingletonComponent.create().singleton();
    System.out.println("singleton: " + comp);
    comp = DaggerSingletonComponent.create().singleton();
    System.out.println("singleton: " + comp);  
}

但是我将不同的对象记录到标准输出中。任何想法为什么?

4

2 回答 2

0

尝试:

@Module
public class SingletonModule {
    private SingletonClass sing = new SingletonClass();

    @Provides
    @Singleton
    SingletonClass provideSingletonClass() {
        return sing;
    }
}
于 2015-05-18T15:39:45.140 回答
0

这是一个愚蠢的错误,但如果有人偶然发现这样的问题,我会留下答案。

我正在做的是创建新的图表,而不是从之前创建的图表中请求一个实例。

于 2015-05-18T19:03:45.377 回答