我正在尝试将项目添加到 ProtocolStringList。当我使用添加函数时,不会返回错误,但是当我尝试打印列表时,我得到 null 作为值。 我不知道我做错了什么。我尝试打印尺寸,但也打印 0。我不知道该怎么做。请帮助。谢谢。 这是代码:
public class demo {
public static void main(String args[])
{
ProtocolStringList s=new ProtocolStringList() {
@Override
public List<ByteString> asByteStringList() {
return null;
}
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(Object o) {
return false;
}
@Override
public Iterator<String> iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public <T> T[] toArray(T[] a) {
return null;
}
@Override
public boolean add(String s) {
return false;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends String> c) {
return false;
}
@Override
public boolean addAll(int index, Collection<? extends String> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public String get(int index) {
return null;
}
@Override
public String set(int index, String element) {
return null;
}
@Override
public void add(int index, String element) {
}
@Override
public String remove(int index) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator<String> listIterator() {
return null;
}
@Override
public ListIterator<String> listIterator(int index) {
return null;
}
@Override
public List<String> subList(int fromIndex, int toIndex) {
return null;
}
};
s.add("a");
s.add("b");
for(int i=0;i<2;i++)
{
System.out.println(s.get(i));//prints null
}
}
}
ProtocolStringList
是一个接口(如 List<E>
)。您需要实例化已实现的数据结构才能添加元素或使用其功能。
示例
ProtocolStringList plist = new LazyStringArrayList();
plist.add("E");
要将项目添加到 Java 列表中,您需要使用生成器并构建对象。
参考指南上有一个示例: https://developers.google.com/protocol-buffers/docs/javatutorial
Person john =
Person.newBuilder()
.setId(1234)
.setName("John Doe")
.setEmail("[email protected]")
.addPhones(
Person.PhoneNumber.newBuilder()
.setNumber("555-4321")
.setType(Person.PhoneType.HOME))
.build();
在您的示例中,您的代码应类似于:
s = ProtocolStringList.newBuilder()
.add("a")
.add("b")
.build();