Le estensioni nel protocollo Buffer non funzionano necessariamente come ci si aspetterebbe, ovvero non corrispondono al meccanismo di ereditarietà Java.
per il vostro problema, io ho creato il file di foobar.proto
seguente:
package test;
message Foo {
optional int32 i = 1;
extensions 10 to 99999;
}
message Bar {
extend Foo {
optional int32 j = 10001;
}
}
Si crea Foobar.java
, contenente le classi Foobar.Bar
e Foobar.Foo
.
E qui è un semplice caso di test JUnit accesso 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));
}
}
Speranza che aiuta chiarire il tuo problema!