假设我有这个类(class):
@Singleton
public class Parent { ... }
和这个类:
public class Child extends Parent { ... }
在我的 Java 应用程序中,我的应用程序依赖于 Guice 注入(inject)来创建对象。如果我通过 Injector.createInstance(Child.class)
创建了 Child
的实例,那么该实例将自动成为 Singleton(因为父对象被注释为 Singleton),或者我是否需要将 @Singleton
注释显式添加到 Child
?
最佳答案
不,您还需要注释 Child
。您可以设置一个简单的测试来验证这一点:
public class GuiceTest {
@Singleton
static class Parent {}
static class Child extends Parent{}
static class Module extends AbstractModule {
@Override
protected void configure() {
bind(Parent.class);
bind(Child.class);
}
}
@Test
public void testSingleton() {
Injector i = Guice.createInjector(new Module());
assertNotSame(i.getInstance(Child.class), i.getInstance(Child.class));
}
}
关于java - Guice的@Singleton注解可以继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015831/