2015-12-24 69 views
3

我有兩個protobuf的消息protobuf的自動生成的類的實例序列,其中不能中的addAll

message A { 
    ... 
} 

message B { 
    repeated A hoge = 1; 
} 

和protoc生成Java代碼:

public Builder addAllA(java.lang.Iterable<? extends A> values) { 
    ... 
} 

但是斯卡拉代碼婁導致類型不匹配,預計:可迭代[_ <:A],實際:可迭代[A]

B.newBuilder().addAllA(A.newBuilder().build().toIterable) 

如何我可以添加AllA嗎?

回答

1

對於我簡單的例子這個工作,這樣至少你可以試試:

import scala.collection.JavaConverters._ 

B.newBuilder().addAllA(A.newBuilder().build().toIterable.asJava) 

從我的POV錯誤的產生是因爲Java的可迭代的不變性和Scala協方差類型檢查,但不知道的。

+0

java和scala具有相同(非限定)名稱的類型時的錯誤消息非常令人沮喪! –

相關問題