首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >必需: GeneratedMessageV3.Builder<*>:如何用值初始化com.google.type.Money

必需: GeneratedMessageV3.Builder<*>:如何用值初始化com.google.type.Money
EN

Stack Overflow用户
提问于 2020-12-25 01:24:42
回答 1查看 211关注 0票数 0

上下文:我想设计一个包含货币字段的原型文件,它将在gRPC服务响应中使用。我在努力追随this tutorial

我得到了这个错误

代码语言:javascript
运行
复制
Type mismatch.
Required:
GeneratedMessageV3.Builder<*>!
Found:String

它清楚地告诉我必须使用GeneratedMessageV3.Builder,但我不知道如何做到这一点。

这就是原型

代码语言:javascript
运行
复制
syntax = "proto3";

    package com.mycomp.adapters.grpc.test;
    
    import "google/api/annotations.proto";
    import "google/type/money.proto";
    
    service TestService {
    
      rpc GetTest (GetTestRequest) returns (Test) {
      }
    }
    
    message GetTestRequest{
        string id_cliente = 1;
    }
    
    message Test {
      string id_cliente = 1;
      google.type.Money test_money = 2;
    }

我是如何实现服务的,以及初始化一个非常简单的com.google.type.Money变量的问题。

代码语言:javascript
运行
复制
import com.google.type.Money
...other imports

@Singleton
class TestEndpoint() : TestServiceGrpcKt.TestServiceCoroutineImplBase() {

    override suspend fun getTest(request: GetTestRequest): Test {

        val test = Test.newBuilder()

        ...
        
        test.testMoney = Money("999.99") //*** certainly my mistake is here

        return test.build()
    }

如果与之相关,下面是build.gradle最重要的部分

代码语言:javascript
运行
复制
dependencies {
    implementation("io.micronaut:micronaut-validation")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("io.micronaut:micronaut-runtime")
    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")

    implementation("io.micronaut:micronaut-http-client")
    
    implementation ("com.google.api.grpc:proto-google-common-protos:1.0.0")
}

我知道在proto文件中使用import "google/api/annotations.proto“和在Kotlin中导入com.google.type.Money所需要的唯一依赖项是

代码语言:javascript
运行
复制
com.google.api.grpc:proto-google-common-protos:1.0.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-25 01:34:50

如果我对the javadoc的解释是正确的,那么您不能直接实例化Money类。取而代之的是使用如下内容:

代码语言:javascript
运行
复制
test.testMoney = Money.newBuilder()
    .setCurrencyCode("USD")
    .setUnits(999)
    .build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65441428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档