【问题标题】:Cast Object[] to another type将 Object[] 转换为另一种类型
【发布时间】:2017-01-14 18:42:36
【问题描述】:

我有 A 类和 B 类,其中 B 类只需要 A 的 10 个属性中的 5 个。

所以我有类似的东西,

A[] objArray = populateResponse();

并将其转换为 B ,我会做类似的事情

for (A : objArray ){ // getters here and push it to B obj array manually }

由于 A 有很多字段并且数组的大小可能会变大,因此有什么其他建议可以更好地做到这一点吗?

提前致谢!

【问题讨论】:

  • A 的属性数量无关。从具有 10 个字段的对象复制 5 个字段与从具有 50 个字段的对象复制 5 个字段所用的时间相同。数组的长度也无关紧要:如果您需要制作该副本,无论您以何种方式进行操作,都必须完成。我认为您正在寻找一个不存在的问题的解决方案。
  • 另外,这与演员阵容无关。
  • @JB 感谢您的意见。很想知道是否可以做点什么。

标签: java reflection javabeans cloning


【解决方案1】:

如果 B 扩展或实现了 A,就扔掉。

否则 - 你不能这样做。你会得到一个ClassCastException

如果这两个类不相关,而您仍想这样做,则应使它们相关。创建一个接口,它们将实现并传递对该接口的引用。但是,这仍然不允许您将 A 转换为 B。

如果您担心 A 的实例过多,可以将它们转换为 B。编写一个函数,获取 A 的实例并从中创建 B 的实例,然后丢失一个实例。

【讨论】:

  • 这很好。用接口试了一下,结果出现异常。您能否详细说明您对在 B 中扩展 A 的看法?
  • 您将无法使用接口将 A 转换为 B,我只是建议您使用对您更有意义的接口。
猜你喜欢
  • 2012-03-28
  • 2020-12-02
  • 2012-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2021-01-11
相关资源
最近更新 更多