如何注入单例?

How to inject singleton?

我正在制作一个快速示例以适应 Dagger2,但我在某一时刻卡住了。 我有一个class想做单例,但是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);  
}

但是我将不同的对象记录到标准输出。 有什么想法吗?

试试:

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

    @Provides
    @Singleton
    SingletonClass provideSingletonClass() {
        return sing;
    }
}

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

我所做的是创建新图,而不是从之前创建的图请求实例