java - JAXB 使用扩展对象工厂扩展生成的代码 - 显式转换好吗?

标签 java types interface casting jaxb

我有一些 JAXB 生成的 bean,它们处于层次结构中,例如一个 bean 包含其他 bean 的列表。现在我想扩展一些子元素以及包含扩展子元素的父元素。

我的 ParentEx实现一些其他接口(interface) IParent预计会返回 Collection<IChild> .我的ChildEx工具 IChild .我可以返回吗 (Collection<IChild>)super.getChild()什么时候super.getChild()返回 List<Child> ?或者有更好的方法吗?

  • ChildParent是 JAXB 生成的 bean
  • ChildExParentEx是我自己的 bean,用于将 JAXB bean 映射到给定的接口(interface)。两个 bean 都覆盖了 ObjectFactory
  • IChildIParent是否需要其他库的接口(interface)

编辑: Eclipse 甚至不允许我从 List<Child> 进行转换至 List<ChildEx>所以我必须添加一些丑陋的中间通配符转换 (List<ChildEx>)(List<?>)super.getChild()

最佳答案

这应该有效:

return new ArrayList<IChild>( childExList );

或(不漂亮但避免通配符转换):

return Arrays.asList( childExList.toArray(new IChild[]{}) );

关于java - JAXB 使用扩展对象工厂扩展生成的代码 - 显式转换好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664152/

相关文章:

java - 在 Java 中对通用元素数组进行排序

python - 如何为自定义类的参数指定类型提示?

typescript - 使用新的定义文件添加到现有库 typescript 类型

java - 从扩展类中覆盖 compareTo - 发生了什么?

java - jSoup 从 <td><span> 类获取文本

java - Sling 资源与节点

java - 使用 flash() 显示所有验证错误

C++类型限定符问题

php - 如何创建一个单独的类来在表中创建新记录并通过 Controller 上的接口(interface)或外观调用它

java - 如何将特殊字段从类转发到 Vaadin 的网格?