【问题标题】:JAXBElement<T> make the declared type T as a parameter to work with any classJAXBElement<T> 将声明的类型 T 作为参数以与任何类一起使用
【发布时间】:2012-07-18 12:54:58
【问题描述】:

我得到了这个代码

private Object fooMethod(Node node, Class classOut)
  JAXBElement<MessageAcknowledgementType> root = unmarshallerjaxObject.unmarshal(node, MessageAcknowledgementType.class);

因为我要用不同的类名调用 fooMethod,所以我想在 JAXBElement 中指定变量 classOut 中的类名,我已经尝试过,但它不起作用:

JAXBElement <classOut.getSimpleName()> root = unmarshallerjaxObject.unmarshal(node, classOut.getSimpleName()); //It doesn't work

关于如何在 JAXBElement 中指定类名的任何想法?谢谢!。

【问题讨论】:

  • fooMethod(Class) 是做什么的?
  • fooMethod(Class) 正在对对象进行解组
  • 我仍然很难理解它的作用。是否有可能在不暴露商业机密的情况下发布一些代码?
  • 嗨 Boris,没问题,我添加了更多代码,现在我希望清楚我想要做什么。我只是希望解组可以与任何不同的类一起使用

标签: java jaxb classname


【解决方案1】:

最简单的就是:

private Object fooMethod(Node node, Class<?> classOut) {
    JAXBElement<?> root = unmarshallerjaxObject.unmarshal(node, classOut);
}

【讨论】:

  • 这是一个非常优雅的解决方案,我知道必须有一种简单的方法来做到这一点,谢谢 Tom!。
【解决方案2】:

这个怎么样:

Object obj = fooMethod(node, classout);

定义另一种方法,将其转换为适合您的类型:

private <T> JAXBElement<T> getCast(Class<T> clazz, Object obj){
    return (JAXBElement<T>)obj;
}

     JAXBElement<Member> jaxbElement = getCast(SomeClass.class, obj);

【讨论】:

  • 嗨,Biju,非常感谢您的回答。我不认为我可以更改该方法的返回类型,因为它已被其他人使用。我添加了更多可能有助于理解我的问题的代码。谢谢
  • 他的意思是从你现有的方法中调用新方法。
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2011-02-21
  • 2021-09-21
  • 2018-10-27
相关资源
最近更新 更多