用Java覆盖public final方法(反射?!)

时间:2013-03-22 21:36:29

标签: java android reflection override final

当我尝试为Android项目创建自定义LayoutAnimationController时,我遇到了问题。它有方法

public final Animation getAnimationForView(View v)

对于我的自定义LayoutAnimationController,我需要覆盖此方法,因为每个视图都应该获得“唯一”动画。 是否可以通过使用反射或类似技术来覆盖公共最终方法,或者您是否有其他想法?

我知道在override java final methods via reflection or other means?中有类似的内容,但是那里出现的“解决方案”对于用户的问题非常具体,并没有完全回答覆盖最终方法的问题。

2 个答案:

答案 0 :(得分:0)

看起来LayoutAnimationController不打算像这样使用。

如果您能够使用您想要的功能覆盖getAnimationForView(View v),那么LayoutAnimationController的大多数方法/构造函数都没有意义,因为这个类是为了使用单个动画(具有不同的延迟)而创建的多个观点。

根据这些信息,查看源代码并创建自己的动画控制器可能会更好。

答案 1 :(得分:0)

一个老问题,但我仍然觉得我应该回答,因为使用LayoutAnimationController似乎不是一个可能的解决方案。

我最终覆盖了AnimationSet,只是将LayoutAnimationController功能移到了该类。当然,还有我的自定义代码。

最后,我只是不得不喋喋不休:这不是我第一次在谷歌的框架中以你喜欢的方式遇到某种私人/最终/访问被拒绝。如果他们给程序员带来困难,他们似乎觉得很有趣。我理解Transformation只有Animation才有表现,但有时候我们只需要不同的东西,通过这些幼稚的方式让我们失望是不可能的。 /咆哮