ウォ〜〜scalaでguice使う時に
— にゃおきゃっと (@nyaocat) July 29, 2019
injector.getInstance(Key.get(new TypeLiteral[Foo[Bar]]{}))
って書くの面倒くさいにゃんよ〜〜!! 単に
injector.instanceOf[Foo[Bar]]
って書けて欲しい〜〜!!
TypeLiteral自体の説明はしないので、各自ぐぐってください。
普通に自分も仕事で new TypeLiteral 大量に書いてるわけですが、そういえばできるだろうけどやったことないな、と思って作りました。
雑にググったらmacroではなく、TypeTagで実行時reflectionでやるライブラリはあるらしいです。 *1
こっちはManifestから取得するやつ(そんなことできるんだっけ・・・)
作ったのが以下。public domainにしてあるので、ご自由にお使いください。 気が向いたらライブラリにしてメンテするかもしれないし、しないかもしれない。
*1:macroでやるやつは見つからなかったけど、誰か知ってたら教えて下さい