【问题标题】:How to handle Runtime Polymorphism in Graphql- Java如何在 Graphql-Java 中处理运行时多态性
【发布时间】:2021-11-23 14:25:27
【问题描述】:

我想知道我们如何处理 Graphql Schema 文件中的运行时多态性,

@Data
class Parent {
   String libraryName;
}

@Data
class Child extends Parent {
 String bookName;
}

测试 class=>

class Test {
 String id;
 Child childObj;
}

现在在正常情况下会发生运行时多态性,并且 Test.Child 将使用父类对象进行初始化 即父 prnt = new Child();

例如 Schema.graphqls

type Test{
  id: String!
  childObj: Child    // Cant assign Parent object
}

// This doesn't work
type Child {
    bookName: String
    libraryName: String
}

type Parent {
    bookName: String
    libraryName: String
}

但在 GraphQl Schema 文件中如何提及呢?

【问题讨论】:

    标签: polymorphism graphql-java


    【解决方案1】:

    在您的示例中,您可以定义ChildParent 类型都实现的interface。例如,也许您将其命名为Member,并将Test.childObj 的类型更改为Member

    interface Member {
      bookName: String
      libraryName: String
    }
    
    type Test {
      id: String!
      childObj: Member    
    }
    
    type Child implements Member {
        bookName: String
        libraryName: String
    }
    
    type Parent implements Member {
        bookName: String
        libraryName: String
    }
    

    另一个选项可能是extend 功能,但它似乎还没有被广泛使用。见this post

    【讨论】:

    • 虽然我不能真正使用 interface ,我只想扩展类,但现在可以看到它有一个解决方法。谢谢
    猜你喜欢
    • 2022-01-16
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多