[英]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.Bar
和Foobar.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.