Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写Java中的公共final方法(反射?!)_Java_Android_Reflection_Overriding_Final - Fatal编程技术网

重写Java中的公共final方法(反射?!)

重写Java中的公共final方法(反射?!),java,android,reflection,overriding,final,Java,Android,Reflection,Overriding,Final,我遇到了一个问题,当时我正试图为一个Android项目创建一个自定义。它有方法 public final Animation getAnimationForView(View v) 对于我的自定义LayoutImationController,我需要重写此方法,因为每个视图都应该获得一个“唯一”的动画。 是否可以通过使用反射或类似的技术来覆盖公共final方法,或者您有其他的想法 我知道在中也讨论过类似的问题,但出现的“解决方案”非常具体,针对用户的问题,并且没有完全回答覆盖最终方法的问题。看

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

public final Animation getAnimationForView(View v)
对于我的自定义LayoutImationController,我需要重写此方法,因为每个视图都应该获得一个“唯一”的动画。 是否可以通过使用反射或类似的技术来覆盖公共final方法,或者您有其他的想法


我知道在中也讨论过类似的问题,但出现的“解决方案”非常具体,针对用户的问题,并且没有完全回答覆盖最终方法的问题。

看起来
LayoutAnimationController
不打算这样使用

如果您能够使用所需的功能覆盖
getAnimationForView(View v)
LayoutAnimationController的大多数方法/构造函数将毫无意义,因为创建此类是为了在多个视图上使用单个动画(具有不同的延迟)


也许最好查看源代码并根据这些信息创建自己的动画控制器。

这是一个老问题,但我仍然觉得我应该回答,因为使用
布局动画控制器似乎没有可能的解决方案

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


最后,我不得不对这一点大发雷霆:这不是我第一次在谷歌的框架中遇到以你喜欢的方式拒绝私人/最终/访问的代码。如果他们给我们程序员一段艰难的时光,他们似乎会觉得很好笑。我知道只有
动画
才有
转换
来表现,但有时我们只是需要一些不同的东西,通过这种幼稚的方式使我们失去能力是非常可笑的/rant

为什么需要在反射中覆盖它?只要有一个实现接口的类,并将动画的唯一性建立在接口的具体实现以外的其他基础上,您就可以使用java.util.Proxy类执行您想要的操作,我不确定你是否能说服它做你想做的事。不幸的是,没有可以实现的LayoutImationController接口——LayoutImationController是基类。如果我尝试使用java.reflect.Proxy,但我想我并没有真正理解如何才能让它工作。实际上,如果查看代码,您可以看到LayoutImationController正在使用
mAnimation.clone()
,因此任何视图都有自己的动画实例。因此,我有点恼火这种方法是公开的。确实,延迟是由您在构造函数中传递的一个动画来计算的,但这对于我的用例来说不是问题,因为任何动画都可能具有相同的持续时间。复制类的问题是,它有很多包可见性依赖项。