2016-09-17 30 views
0

我正在使用Google Protobuf與Java。我在發送空的重複字符串時遇到問題。Google Protobuf空的列表顯示大小1

message OurPokemonMessage { 
     .... 
     repeated string learnableMoves = 10; 
} 

現在,當我使用的Protobuf方法來添加一個集合(裏面是空的)這樣的:使用這個消息時,我創建的字符串的新列表

message.addAllLearnableMoves(someEmptyListOfString); 

現在,我得到一個元素在列表這是一個空列表。

這是我如何使用信息創建字符串列表:

new ArrayList<>(message.getLearnableMovesList()) 

此數組列表包含一個空字符串元素。所以我調試了這條消息並評估了兩個條件並發現了奇怪的結果。

message.getLearnableMovesList()//clearly shows empty list 

    (com.google.protobuf.UnmodifiableLazyStringList) [] //Empty 

message.getLearnableMovesList().size()//shows the size of list is 1 
    (int) 1 //Size is 1 

有沒有人有類似的問題?有什麼辦法可以解決這個問題嗎?

+0

而不是向我們展示的片段,你能提供一個[MCVE ]?這將使我們更容易重現問題。 –

+0

我試圖用一個較小的例子來重現問題,但它並不在這種情況下。由於我正在使用複雜的Protobuf結構並通過網絡發送消息,因此我不太確定如何提供適當的示例:/ – Sneh

+0

如果您正在努力在一個小例子中重現該問題,可能在其他地方存在問題對我們來說很難幫到。嘗試複製您的整個項目,並逐漸刪除位,直到您找到問題或有一個小例子。 –

回答

0

所以後來才意識到protobuf庫沒有問題。問題是,在我的learnableMove領域,我將其在使用的toString打印一個空字符串()被顯示[],而列表的大小爲1