java - Existe-t-il une manière élégante de gérer différemment les appels provenant de différentes sources pour la même méthode?
淡淡烟草味
淡淡烟草味 2017-07-03 11:42:06
0
2
1240

Quand j'écrivais un contrôle.
Il existe une méthode de classesubViewPager继承了ViewPager,我在另外一个地方需要用到这个ViewPagergetCurrentItem(), qui consiste à obtenir une certaine coordonnée de ce contrôle.

Mais à cause de moiViewPager为了特殊效果,就让它的getCurrentItem()返回的坐标有可能超出了我数据集合的长度size,

Par exemple, la longueur de mon ensemble de données est size = 1024size = 1024
getCurrentItem()返回的是40280 et getCurrentItem() renvoie 40280

Alors quand je l'appelle activement, j'espère qu'il pourra me rendre le résultat de cette coordonnée %=size : 4028%1024.

Aussi ses getCurrentItem()方法被系统调用时应该返回应该是40280numéros comme celui-ci.

Mon approche originale était d'écrire une méthode spéciale pour obtenir ce %=size résultat. Forcez-le lorsque vous avez besoin d'obtenir ce paramètre.

Plus tard, je l'ai un peu modifié et utilisé new Exception().getStackTrace(); pour obtenir les informations sur la pile d'appels afin de déterminer si la méthode a été appelée par la classe spécifiée. Cela élimine le besoin de forcer et d’écrire une méthode spécifique à une sous-classe.

Mais cette approche générera beaucoup de mémoire inutile et provoquera fréquemment du GC, alors pensez à utiliser la première méthode pour y remédier. GC,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPagerMais le transfert forcé est toujours un peu désagréable, et on a l'impression qu'il n'y a pas de réutilisation. (Bien que ce soit à cause du mauvais code... et que la réutilisabilité de subViewPager soit également réduite en faisant cela) Je voulais donc demander s'il existe un moyen d'appeler la même méthode dans différents classes. Existe-t-il un moyen d’effectuer différentes opérations avec élégance ?

淡淡烟草味
淡淡烟草味

répondre à tous(2)
大家讲道理

N'est-il pas suffisant que subViewPager remplace getCurrentItem() ? .

学霸

J'ai vu des solutions d'implémentation de bibliothèques similaires. Si la logique métier renvoyée par les appels internes et externes de votre méthode n'est pas cohérente, il est recommandé de définir une méthode supplémentaire... par exemple getCurrentRealItem()

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal