如何注入单例?
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;
}
}
这是一个愚蠢的错误,但如果有人偶然发现这样的问题,我会留下答案。
我所做的是创建新图,而不是从之前创建的图请求实例。
我正在制作一个快速示例以适应 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;
}
}
这是一个愚蠢的错误,但如果有人偶然发现这样的问题,我会留下答案。
我所做的是创建新图,而不是从之前创建的图请求实例。