我试图使用JAXB(在泽西)与泛型的多态:
@XmlRootElement
public class Performance<M extends IMeasurement> {
@XmlAnyElement
private List<M> measurement;
}
@XmlJavaTypeAdapter(MeasurementAbstract.Adapter.class)
public interface IMeasurement<D extends Serializable, V extends Number>
extends Serializable {
D getDate();
void setDate(D date);
V getValue();
void setValue(V value);
}
@XmlTransient
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({MeasurementStringDouble.class, MeasurementStringInteger.class})
public abstract class MeasurementAbstract<D extends Serializable, V extends Number> implements IMeasurement<D, V> {
@XmlElement
protected D date;
@XmlElement
protected V value;
static class Adapter extends XmlAdapter<MeasurementAbstract, IMeasurement> {
public IMeasurement unmarshal(MeasurementAbstract m) { return m; }
public MeasurementAbstract marshal(IMeasurement v) { return (MeasurementAbstract) v; }
}
}
@XmlRootElement
public class MeasurementStringDouble extends MeasurementAbstract<String, Double> {}
@XmlRootElement
public class MeasurementStringInteger extends MeasurementAbstract<String, Integer> {}
我有一个错误:
GRAVE:将异常映射到响应:500(内部服务器错误)javax。ws。rs.WebApplicationException:javax。xml。绑定MarshalException——带有链接异常:[javax.xml.bind.jaxbeException:class org.test.jaxb.MeasurementStringDouble,其任何超类在此上下文中都不为人所知。]
我找到了解决这个问题的方法:
java prettyprint-override">@XmlRootElement
public class Performance<M extends IMeasurement> {
@XmlElementWrapper(name = "measurementsPerformance")
@XmlElements({
@XmlElement(name = "measurement", type = MeasurementStringDouble.class),
@XmlElement(name = "measurement", type = MeasurementStringInteger.class)})
private List<M> measurement;
}
public interface IMeasurement<D extends Serializable, V extends Number> extends Serializable {
D getDate();
void setDate(D date);
V getValue();
void setValue(V value);
}
@XmlTransient
public abstract class MeasurementAbstract<D extends Serializable, V extends Number> implements IMeasurement<D, V>, Serializable {
protected D date;
protected V value;
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class MeasurementStringDouble extends MeasurementAbstract<String, Double> {
@XmlElement
@Override
public String getDate() {
return date;
}
@XmlElement
@Override
public Double getValue() {
return value;
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class MeasurementStringInteger extends MeasurementAbstract<String, Integer> {
@XmlElement
@Override
public String getDate() {
return date;
}
@XmlElement
@Override
public Integer getValue() {
return value;
}
}
这个解决方案的缺点是重复子类中的getters/setters。
我尝试使用thajaxb来整理xml,我使用xjc命令从xsd文件order.xsd生成java类 我得到了许多带注释的类,但没有一个@XmlRootElement(name="Order"),也没有名为Order的类
问题内容: 所以我有一张地图: 我会像这样添加元素: 我有如下通用方法: 现在,这段代码可以很好地工作,并且没有编译器问题: 但是,当我尝试这样做时: 编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class) 这让我感到困惑…请帮助… 问题答案: 更改: 至 通过仅将类型声明为“ Class”,就失去
我正在尝试用来自spring WebFlux的WebClient制作一个客户端库。 服务器返回如下JSON所示的响应: 结果字段包含元素数组,这些元素可以根据使用的API而不同。 有关该API的更多信息,请参阅ServiceNow产品中的表API。 正如您在文档中所看到的,API路径如下所示:GET/now/table/{tableName},其中tableName可以是不同的值,tipology
问题内容: 我想拥有一个Class对象,但是我想强迫它代表的任何类扩展A类并实现接口B。 我可以: 要么: 但我不能两者都做。有没有办法做到这一点? 问题答案: 实际上,你可以做你想做的事。如果要提供多个接口或一个类加接口,则必须使通配符看起来像这样: 请参见sun.com上的泛型教程,特别是页面底部的“ 绑定类型参数”部分。实际上,如果需要,你可以列出多个接口,并& InterfaceName根
它是关于java中具有两种泛型类型(一种用于返回类型,另一种用于形式参数)的泛型方法以及如何实现它。我想我在图片中缺少一些东西来让它工作。 事情是这样的... 这是工作 : 这不起作用: java编译器告诉我: 好吧,就是这样。提前感谢大家!希望它能在未来帮助别人! P、 D:这不是枚举类型的问题。它发生在类和层次结构之间。所以别怪Enum了,我试过了,但没用。 对于泛型参数 我们可以做一个一般规
问题内容: 我正在尝试使用JAXB的自省功能来编组和分解所有使用JAXB批注标记的现有域对象。大多数事情都按预期运行,但是要获得一个相当简单的类进行序列化,我会遇到很多麻烦。此类在许多bean上用作@XmlElement,看起来像: 我尝试执行以下操作,但没有成功,JAXB仍然对接口Comparable感到愤怒。 将Range和DoubleRange都用作bean getter的返回类型会产生如下