作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 JAX-RPC (Java) 网络服务需要返回一个复杂的多态值。更具体地说,类结构是这样的:
abstract class Child {
}
class Question extends Child {
private String name;
// other fields, getters, and setters
}
class Section extends Child {
private String label;
private Child[] children;
// getters and setters
}
class Quiz {
private Child[] elements;
// getter and setter
}
我的 web 服务有一个返回测验的方法,它当然可能包含问题和部分,可能包含问题和其他部分,等等。但是,当我生成 WSDL 时,只有 Child 和 Quiz 进入。当我调用 Web 服务时,我得到一个 Quiz 元素,其中包含正确数量的子元素,但它们都是 Child 元素,而且它们都是空的.
除了将 XML 作为字符串返回之外,是否有更好的方法来完成这项工作?
在任何人问之前,由于我无法控制的情况,我无法使用 JAX-WS。
最佳答案
我不认为 JAX-RPC 以这种方式支持多态性。我有一个类似的问题,并且不得不通过创建一个只有两个成员的类来解决这个问题——一个用于可能返回的两个类中的每一个——并且只根据我想要返回的类型填充一个。所以在你的情况下:
class Child
{
private Section section;
private Question question;
// Constructor, etc...
}
class Question
{
private String name;
// other fields, getters, and setters
}
class Section
{
private String label;
private Child[] children;
// getters and setters
}
class Quiz
{
private Child[] elements;
// getter and setter
}
我知道,这需要客户端检查填充了哪个子成员,而且非常丑陋。
关于java - JAX-RPC Web 服务中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247442/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!