我在迁移我们的Java代码(为v1Beta2数据存储API编写)以符合v1 API时遇到了重大问题。以下是不匹配:
值类:hasDoubleValue(),hasStringValue()和其他函数可以让您确定存储的值的类型?确定价值类型的新方法是什么?
与LookupRequest,Query,RunQueryRequest,...相关的所有getBuilder()方法发生了什么?我们现在只是为这些类调用构造函数吗? Builder类和getBuilder()方法似乎不必要地复杂化。
答案 0 :(得分:1)
要确定值类型,可以使用switch语句:
switch (value.getValueTypeCase()) {
case DOUBLE_VALUE:
value.getDoubleValue()...
break;
case STRING_VALUE:
value.getStringValue()...
break;
...
}
要获取LookupRequest.Builder
对象,您可以调用LookupRequest.newBuilder()
(其他消息类型也相同)。
顺便说一句,如果您要重写代码以停止使用Cloud Datastore v1beta2,您可能需要查看google-cloud-java,它为协议缓冲区API提供了更加惯用的包装。