繁体   English   中英

用Java扩展协议缓冲区

[英]Extending Protocol Buffers in Java

我无法访问扩展协议缓冲区成员。 这是场景:

Message Foo {   optional int i = 1; }

message Bar {   extend Foo {
    optional int j = 10001;   } }

我的任何其他原型中都没有Bar消息。 我怎样才能在Java中获得Bar.j? 我发现的所有示例都需要消息中的条形码。

谢谢!

协议缓冲区中的扩展不能像您期望的那样工作,即它们与Java继承机制不匹配。

对于您的问题,我创建了以下foobar.proto文件:

package test;

message Foo {
    optional int32 i = 1;
    extensions 10 to 99999;
}

message Bar {
    extend Foo {
        optional int32 j = 10001;
    }
}

它创建了Foobar.java ,包含Foobar.BarFoobar.Foo类。

这是一个访问Bar.j的简单JUnit测试用例:

import static org.junit.Assert.assertEquals;
import org.junit.Test;
import test.Foobar.Bar;
import test.Foobar.Foo;

public class TestFooBar {

    @Test
    public void testFooBar() {
        Foo foo = Foo.newBuilder().setI(123).setExtension(Bar.j, 456).build();
        assertEquals(Integer.valueOf(456), foo.getExtension(Bar.j));
    }
}

希望有助于澄清您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM