使用scala中的guice,我试图重现以下java代码。
foo接口和类声明:
public interface Foo[T] {}
public class FooImpl[T] implements Foo[T] {}
guice绑定代码:
bind(Foo.class).to(FooImpl.class);
一个例子是;
@Inject
public class Bar(Foo<String> foo) {}
在斯卡拉,我的第一个赌注是:
bind(classOf[Foo]).to(classOf[FooImpl])
但它抱怨“type foo takes type parameter”,我如何在scala中实现这一点?
谢谢您
1条答案
按热度按时间qyzbxkaa1#
你的问题有一个错误,因此它让你得到一个错误的答案。
让我们先确定你的概念。有
trait
```trait Foo[T] { def hello: T }
class FooImpl1 extends Foo[Int] { override def hello: Int = 42 }
class FooImpl2 extends Foo[String]{ override def hello: String = "test" }
class FooImpl[Int] extends Foo[Int] { override def hello: Int = 42 }
class FooImpl[String] extends Foo[String]{ override def hello: String = "test" }
bind(classOf[X]).to(classOf[Y])
bind(new TypeLiteralFoo[Int]{}).to(classOf[FooImpl1])
bind(new TypeLiteralFoo[String]{}).to(classOf[FooImpl2])