Java GraphQL 注解:指定列表字段
Java GraphQL Annotations: Specify List Field
如何在 java-graphql-annotations 框架中指定列表字段?
不幸的是,我找不到任何关于指定列表字段的 documentation。
此示例产生错误:
// Bean class
public class MyBean {
@GraphQLField
public List<?> getList() {
return null;
}
}
// instantiate object type
GraphQLAnnotations.object(MyBean.class);
异常堆栈跟踪:
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.WildcardTypeImpl cannot be cast to java.lang.Class
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:133) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:120) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:304) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:37) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getField(GraphQLAnnotations.java:391) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObjectBuilder(GraphQLAnnotations.java:208) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObject(GraphQLAnnotations.java:167) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.object(GraphQLAnnotations.java:173) ~[graphql-java-annotations-0.13.1.jar:na]
...
该方法必须是 return 列表的类型:
...
@GraphQLField
public List<Object> getList() {
return myValue;
}
...
好吧,您要么创建一个 dataFetcher class 将列表 return 绑定到字段上方的带有 @GraphQLDataFetcher(FetcherClass.class)
注释的字段(然后该方法永远不会调用所以你可以 return null),或者你可以 return 方法本身中的列表。
顺便说一句 - 我认为它不能使用通配符,你必须指定一个类型
如何在 java-graphql-annotations 框架中指定列表字段? 不幸的是,我找不到任何关于指定列表字段的 documentation。
此示例产生错误:
// Bean class
public class MyBean {
@GraphQLField
public List<?> getList() {
return null;
}
}
// instantiate object type
GraphQLAnnotations.object(MyBean.class);
异常堆栈跟踪:
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.WildcardTypeImpl cannot be cast to java.lang.Class
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:133) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:120) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:304) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:37) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getField(GraphQLAnnotations.java:391) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObjectBuilder(GraphQLAnnotations.java:208) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObject(GraphQLAnnotations.java:167) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.object(GraphQLAnnotations.java:173) ~[graphql-java-annotations-0.13.1.jar:na]
...
该方法必须是 return 列表的类型:
...
@GraphQLField
public List<Object> getList() {
return myValue;
}
...
好吧,您要么创建一个 dataFetcher class 将列表 return 绑定到字段上方的带有 @GraphQLDataFetcher(FetcherClass.class)
注释的字段(然后该方法永远不会调用所以你可以 return null),或者你可以 return 方法本身中的列表。
顺便说一句 - 我认为它不能使用通配符,你必须指定一个类型