## page was renamed from guice/Manual/UserGuide/Bindings/LinkBindings ## page was renamed from guice/Manual/UserGuide/Bindings/LinkBinding = リンクバインディング = リンクバインディングは、タイプを実装にマップする。 この例では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を返す。