将项目添加到 ProtocolStringList

问题描述 投票:0回答:2

我正在尝试将项目添加到 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
        }

    }
}
java protocol-buffers
2个回答
1
投票

ProtocolStringList
是一个接口(如
List<E>
)。您需要实例化已实现的数据结构才能添加元素或使用其功能。

示例

ProtocolStringList plist = new LazyStringArrayList();
plist.add("E");

0
投票

要将项目添加到 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();
© www.soinside.com 2019 - 2024. All rights reserved.