我在写一个控件的时候。
有一个类subViewPager
继承了ViewPager
,我在另外一个地方需要用到这个ViewPager
的getCurrentItem()
方法,意思就是获取这个控件的某个坐标。
但是由于我这个ViewPager
为了特殊效果,就让它的getCurrentItem()
返回的坐标有可能超出了我数据集合的长度size
,
比如我的数据集合的长度为
size = 1024
而getCurrentItem()
返回的是40280
所以在我主动调用他的时候我希望他能返回给我的是这个坐标%=size : 4028%1024
的结果。
同时他的getCurrentItem()
方法被系统调用时应该返回应该是40280
这样的数字。
我原来的做法是写一个特殊的方法获得这个%=size
后的结果。在需要获取这个参数的时候强转一下。
后来我改变了一下,利用new Exception().getStackTrace();
获取调用栈的信息来判断方法是否被指定类调用的。这样就不需要强转和写一个子类特有的方法了。
但是这样的做法会产生大量的垃圾内存,频繁引起GC
,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager
的复用性也降低了)所以就想来请教一下有什么办法让同一个方法在不同类中被调用时有什么办法可以优雅的做出不同的操作?
subViewPager重写getCurrentItem()不就可以了吗。。
看过类似的库的实现方案,如果你的这个方法内部和外部调用的返回的业务逻辑就不统一的话,建议还是额外定义一个方法比较好……比如
getCurrentRealItem()