3

假设我有这个类:

@Singleton
public class Parent { ... }

和这个类:

public class Child extends Parent { ... }

在我的 Java 应用程序中,我的应用程序依赖Guice注入来创建对象。如果我创建Childthrough的实例Injector.createInstance(Child.class),该实例是否会自动成为 Singleton(因为父对象被注释为 Singleton),还是需要显式地将@Singleton注释添加到Child

4

1 回答 1

6

不-您还需要注释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));
  }

}
于 2012-10-22T16:45:42.643 回答