带数字的Protobuf字段名称以非预期的方式大写

时间:2018-10-24 11:02:39

标签: java protocol-buffers protoc

我有一条消息:

message Image {

    string link_40dp = 1;
}

编译后,在Java中,字段名称为link40Dp(数字后的首字母大写)。但是,我希望字段名称为link40dp(小写的d)。

是预期的行为还是错误?还有其他类似的情况吗?

我正在使用Protobuf Gradle Plugin v0.8.5Protoc v3.6.1来用Java生成消息。

2 个答案:

答案 0 :(得分:1)

字段名称从snake case(带下划线)转换为camel case(带音节大写)。

link_40dp骆驼箱因此可以提供"link" + capitalize("40dp") capitalize(string)会将第一个字母变成大写的地方。

我认为,Apache commons库会将“ 40dp”大写为“ 40dp”(不变),但是显然“聪明”的大写会跳过数字。

这至少表明原始字符串包含下划线:link_40dplink4_0dplink40_dp

这是一种预期的行为,尽管出乎意料。

答案 1 :(得分:0)

我查看了消息来源,发现这是预期的行为。

请参见大写的code。所有大写规则都可以在代码段中找到。