Skip to content

Instantly share code, notes, and snippets.

@rodolfodpk
Created July 24, 2014 03:55
Show Gist options
  • Save rodolfodpk/c6672a777799865b889f to your computer and use it in GitHub Desktop.
Save rodolfodpk/c6672a777799865b889f to your computer and use it in GitHub Desktop.
package app
import com.google.inject.AbstractModule
import javax.inject.Inject
import com.google.inject.Guice
fun main(args: Array<String>) {
val module = MyModule()
val injector = Guice.createInjector(module)
val a = injector?.getInstance(javaClass<A>())
println(a)
println(a?.b)
println(a?.c?.say())
}
class MyModule : AbstractModule() {
override fun configure() {
bind(javaClass<A>())
bind(javaClass<B>())
bind(javaClass<C>())?.to(javaClass<D>())
}
}
class A [Inject] (val b: B, val c: C)
class B
trait C {
fun name(): String
fun say() = "Hello, " + name() + "!"
}
class D : C {
override fun name() = "world"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment