必需:GeneratedMessageV3.Builder<*>:如何使用值初始化 com.google.type.Money
Required: GeneratedMessageV3.Builder<*>: how initialize com.google.type.Money with a value
上下文:我想设计一个包含将在 gRPC 服务响应中使用的货币字段的原型文件。我正在尝试关注 this tutorial
我收到这个错误
Type mismatch.
Required:
GeneratedMessageV3.Builder<*>!
Found:String
它明明说我必须使用 GeneratedMessageV3.Builder 但我不知道该怎么做。
这是原型
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 变量。
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
最重要的部分
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 中使用 import com.google.type.Money 所需的唯一依赖项是
com.google.api.grpc:proto-google-common-protos:1.0.0
如果我正确解释 the javadoc,您不能直接实例化 Money
class。而是使用类似的东西:
test.testMoney = Money.newBuilder()
.setCurrencyCode("USD")
.setUnits(999)
.build();
上下文:我想设计一个包含将在 gRPC 服务响应中使用的货币字段的原型文件。我正在尝试关注 this tutorial
我收到这个错误
Type mismatch.
Required:
GeneratedMessageV3.Builder<*>!
Found:String
它明明说我必须使用 GeneratedMessageV3.Builder 但我不知道该怎么做。
这是原型
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 变量。
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
最重要的部分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 中使用 import com.google.type.Money 所需的唯一依赖项是
com.google.api.grpc:proto-google-common-protos:1.0.0
如果我正确解释 the javadoc,您不能直接实例化 Money
class。而是使用类似的东西:
test.testMoney = Money.newBuilder()
.setCurrencyCode("USD")
.setUnits(999)
.build();