Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

guice/Manual/UserGuide/Bindings/LinkedBindings

リンクバインディング

リンクバインディングは、タイプを実装にマップする。 この例ではTransactionLogインターフェースをDatabaseTransationLog実装にマップしている。

public class BillingModule extends AbstractModule {
  @Override 
  protected void configure() {
    bind(TransactionLog.class).to(DatabaseTransactionLog.class);
  }
}

さて、injector.getInstance(TransactionLog.class)と呼び出したり、あるいはインジェクタがTransactionLog依存を見つけたりすると、そこでDatabaseTransactionLogが使われる。 リンクは、あるタイプのサブタイプも可能である、実装クラスや拡張クラスといったものである。 コンクリートなDatabaseTransactionLogをそのサブクラスにリンクすることも可能だ。

訳注:インターフェースを実装クラスにマップすることだけができるわけではなく、要するにどのような型でもマップ元に指定できるということ。

    bind(DatabaseTransactionLog.class).to(MySqlDatabaseTransactionLog.class);

リンクバインディングはチェーンすることもできる。

public class BillingModule extends AbstractModule {
  @Override 
  protected void configure() {
    bind(TransactionLog.class).to(DatabaseTransactionLog.class);
    bind(DatabaseTransactionLog.class).to(MySqlDatabaseTransactionLog.class);
  }
}

この場合、TransactionLogが要求されると、インジェクタはMySqlDatabaseTransactionLogを返す。