【问题标题】:Force parsing a from parent-type to child-type?强制将父类型解析为子类型?
【发布时间】:2011-04-04 11:34:02
【问题描述】:

我有一个类,它有许多其他类扩展它。所以现在我使用 GenericPool 来回收项目以获得更好的性能。但问题是,我不能投子类,例如:

StarDustSprite sprStarDust = (StarDustSprite) splStarDust[rndGenerator.nextInt(Parent.andStarDustR.length)].obtainPoolItem();

(StarDustSprite扩展了一个名为Sprite的类,obtainPoolItem()函数返回一个Sprite对象)。

那么我可以强制解析它吗?或者如果我有 10 个子类,我必须创建 10 个 GenericPool 类?

谢谢。

【问题讨论】:

  • 当心 - 回收对象“以获得更好的性能”可能会导致更差性能!
  • 您能解释一下原因吗?每次创建 Sprite 时,我都必须创建一个 Texture 和一个 TextureRegion,以及初始化 Sprite(我的意思是扩展 Sprite 的类)。

标签: java android casting


【解决方案1】:

那我可以强制解析吗?

不,您不能这样转换,原因与您不能将 Object 转换为 String 的原因相同。

或者如果我有 10 个子类,我必须创建 10 个 GenericPool 类?

我想是的。但我一开始不会这样解决。

如果你真的想重用对象,我建议你只是懒惰地初始化一个对象列表,以后可以重用。

【讨论】:

  • 感谢您的回答。但我无法初始化该列表,因为我不知道我需要多少。但是child class比较多,希望有更好的解决方案!
  • 这就是为什么你会懒惰地这样做,即“按需”。查找延迟初始化。
  • 好的,谢谢,看来复制GenericPool 类更简单,因为我只需要更改类类型名称。问题解决了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多