Allows binding via type parameters.
Allows binding via type parameters. Mix into AbstractModule
(or subclass) to allow using a type parameter instead of
classOf[Foo]
or new TypeLiteral[Bar[Foo]] {}
.
For example, instead of
class MyModule extends AbstractModule { def configure { bind(classOf[Service]).to(classOf[ServiceImpl]).in(classOf[Singleton]) bind(classOf[CreditCardPaymentService]) bind(new TypeLiteral[Bar[Foo]]{}).to(classOf[FooBarImpl]) bind(classOf[PaymentService]).to(classOf[CreditCardPaymentService]) } }
use
class MyModule extends AbstractModule with ScalaModule { def configure { bind[Service].to[ServiceImpl].in[Singleton] bind[CreditCardPaymentService] bind[Bar[Foo]].to[FooBarImpl] bind[PaymentService].to[CreditCardPaymentService] } }
Note This syntax allows binding to and from generic types. It doesn't currently allow bindings between wildcard types because the manifests for wildcard types don't provide access to type bounds.
Analog to the Guice Multibinder
Provider for a Scala Immutable Set from a Java Set.
Provider for a Scala Immutable Set from a Java Set.
Example:
.toProvider( new SetProvider[T]( Key.get( typeLiteral[JSet[T]] ) ) )
Analog to the Guice Multibinder
Analog to the Guice Multibinder
Use newSetBinder
to create a multibinder instance
Get the class for a Java Annotation using a scala.Manifest.
Create a com.google.inject.TypeLiteral from a scala.Manifest.
Create a com.google.inject.TypeLiteral from a scala.Manifest. Subtypes of scala.AnyVal will be converted to their corresponding Java wrapper classes.