Расширения в буфере протокола не обязательно работают так, как вы ожидаете, то есть они не соответствуют механизму наследования 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
.
А вот простой тестовый пример JUnit для доступа к Bar.j:
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));
}
}
Надеюсь, это поможет прояснить вашу проблему!