2010-12-29 2 views
3

У меня есть сообщение буфера протокола, как это:получить имя верблюда из поля протокола буфера

message Person { 

    optional string last_name = 1; 
    optional string first_name = 2; 

    } 

Ява сгенерированный класс выглядит следующим образом:

public static final class Person extends 
     com.google.protobuf.GeneratedMessage { 
    // Use Person.newBuilder() to construct. 
    ...... constructor stuffs 

    // optional string first_name = 1; 
    public static final int FIRST_NAME_FIELD_NUMBER = 1; 
    private boolean hasFirstName; 
    private java.lang.String firstName_ = ""; 
    public boolean hasFirstName() { return hasFirstName; } 
    public java.lang.String getFirstName() { return firstName_; } 

    // optional string last_name = 2; 
    public static final int LAST_NAME_FIELD_NUMBER = 2; 
    private boolean hasLastName; 
    private java.lang.String lastName_ = ""; 
    public boolean hasLastName() { return hasLastName; } 
    public java.lang.String getLastName() { return lastName_; } 
    ............ 
} 

Когда объект Java генерируется он использует верблюд имя поля как lastName, firstName через метод call getLastName() и getFirstName(). Есть ли способ получить название поля верблюда? Я не хочу, чтобы получить имя исходного поля: last_name, first_name и преобразовать его снова в имя имени верблюда каждый раз, когда я хочу сделать getter и setter на моем java-объекте.

+1

Я не совсем понимаю, о чем вы просите. Можете ли вы опубликовать код для генерируемого объекта Java. – rancidfishbreath

ответ

2

Копирование в ответ (отсюда вики, а не мой ответ) от Кентон Варда на protobuf list:

Нет, название верблюда случае не хранится. Вам нужно будет построить самостоятельно. Если производительность является проблемой, просто кешируйте результаты на карте .