3

私がこのクラスを持っているとしましょう:

@Singleton
public class Parent { ... }

そしてこのクラス:

public class Child extends Parent { ... }

私のJavaアプリでは、私のアプリはGuiceインジェクションに依存してオブジェクトを作成します。Childthroughのインスタンスを作成する場合、Injector.createInstance(Child.class)そのインスタンスは自動的にシングルトンになります(親がシングルトンとして注釈が付けられているため)、または@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 に答える