在 GraphQL (Apollo) 中转换 InputType 对象

Cast InputType object in GraphQL (Apollo)

我有这种类型的列表(地址是我的 java class):

List<Address> addresses = new ArrayList<>();

public class Address {
...
}

我必须执行这种类型的请求:

apolloClient = ApolloClient.builder()
        .serverUrl(mContext.getString(R.string.graphqlUrl))
        .okHttpClient(okHttpClient)
        .addCustomTypeAdapter(CustomType.LISTOFMAPTOOBJECT, new AddressCustomTypeAdapter().customTypeAdapter())
        .build();

apolloClient.mutate(
        UpdateProfileAddressesMutation.builder()
                .addresses(?)
                .build()
).enqueue(new ApolloCall.Callback<UpdateProfileAddressesMutation.Data>() {
...
});

但我不知道我必须在 .addresses(?) 中作为参数发送什么。此方法要求我发送一个 AddressInput 的 ArrayList,它是一个 graphql class autogenerate.

public final class AddressInput implements InputType { ... }

如何在 AddressInput 中转换我的地址?

如果我尝试

AddressInput ad = new AddressInput();

我有以下错误"Cannot be accessed from outside package"

生成的输入类型有一个可用于实例化它的构建器方法,因此您的代码如下所示:

// Java
AddressInput address = AddressInput
  .builder()
  .city("San Francisco")
  .state("CA")
  .build();

// Kotlin
val address = AddressInput
  .builder()
  .city("San Francisco")
  .state("CA")
  .build()

如果 AddressInput 中的任何字段也是输入对象类型,您需要以类似的方式构建它们。