0
使用泛型我下面用com.google.inject.multibindings.Multibinder
時是仿製藥有點困惑:在Multibinder
interface MessageParser<S, T> {
fun accept(msg: S): Boolean
fun parser(msg: S): T
}
class Parser1 : MessageParser<Mime, Parsed>
class Parser2 : MessageParser<Mime, Parsed>
class EmailModule : AbstractModule() {
override fun configure() {
val parsers = Multibinder.newSetBinder(binder(), MessageParser::class.java)
parsers.addBinding().to(Parser1::class.java)
parsers.addBinding().to(Parser2::class.java)
}
}
這工作,但失去所有的仿製藥信息。是否有可能限制這解析器的特定子集,即做
val parsers: MessageParser<Mime, Parsed> =
Multibinder.newSetBinder(binder(), MessageParser<Mime, Parsed>::class.java)
眼下,這會產生一個編譯器錯誤:
Only classes are allowed on the left hand side of a class literal
我知道這不是問題的一部分,但是你會知道爲什麼這個映射不能用在同一個模塊的'@Proced'方法中嗎?否則,按照廣告宣傳,接受。 – mabi