我有一条消息:
message Image {
string link_40dp = 1;
}
编译后,在Java中,字段名称为link40Dp
(数字后的首字母大写)。但是,我希望字段名称为link40dp
(小写的d
)。
是预期的行为还是错误?还有其他类似的情况吗?
我正在使用Protobuf Gradle Plugin v0.8.5
和Protoc v3.6.1
来用Java生成消息。
答案 0 :(得分:1)
字段名称从snake case(带下划线)转换为camel case(带音节大写)。
link_40dp
骆驼箱因此可以提供"link" + capitalize("40dp")
。
capitalize(string)会将第一个字母变成大写的地方。
我认为,Apache commons库会将“ 40dp”大写为“ 40dp”(不变),但是显然“聪明”的大写会跳过数字。
这至少表明原始字符串包含下划线:link_40dp
,link4_0dp
或link40_dp
。
这是一种预期的行为,尽管出乎意料。
答案 1 :(得分:0)
我查看了消息来源,发现这是预期的行为。
请参见大写的code。所有大写规则都可以在代码段中找到。