Mek*_*iki 5 java scala protocol-buffers
我有两个 protobuf 消息,其中
message A {
...
}
message B {
repeated A hoge = 1;
}
Run Code Online (Sandbox Code Playgroud)
protoc 生成 Java 代码:
public Builder addAllA(java.lang.Iterable<? extends A> values) {
...
}
Run Code Online (Sandbox Code Playgroud)
但下面的 Scala 代码会导致类型不匹配,预期:Iterable[_ <: A],实际:Iterable[A]
B.newBuilder().addAllA(A.newBuilder().build().toIterable)
Run Code Online (Sandbox Code Playgroud)
我怎样才能添加AllA?
对于我的简化示例,这是有效的,所以至少您可以尝试:
import scala.collection.JavaConverters._
B.newBuilder().addAllA(A.newBuilder().build().toIterable.asJava)
Run Code Online (Sandbox Code Playgroud)
从我的观点来看,错误是由于 java Iterable 和 scala 协方差类型检查的不变性而出现的,但不确定。