java - Adakah terdapat cara yang elegan untuk mengendalikan panggilan dari sumber yang berbeza secara berbeza untuk kaedah yang sama?
淡淡烟草味
淡淡烟草味 2017-07-03 11:42:06
0
2
1266

Semasa saya menulis kawalan.
Terdapat kaedah kelassubViewPager继承了ViewPager,我在另外一个地方需要用到这个ViewPagergetCurrentItem(), yang bermaksud untuk mendapatkan koordinat tertentu kawalan ini.

Tetapi kerana sayaViewPager为了特殊效果,就让它的getCurrentItem()返回的坐标有可能超出了我数据集合的长度size,

Sebagai contoh, panjang set data saya ialah saiz = 1024size = 1024
getCurrentItem()返回的是40280 dan getCurrentItem() mengembalikan 40280

Jadi apabila saya aktif menghubunginya, saya berharap agar dia dapat mengembalikan kepada saya hasil koordinat ini %=size : 4028%1024.

Juga getCurrentItem()方法被系统调用时应该返回应该是40280nombornya seperti ini.

Pendekatan asal saya ialah menulis kaedah khas untuk mendapatkan hasil %=size ini. Paksa apabila anda perlu mendapatkan parameter ini.

Kemudian saya mengubahnya sedikit dan menggunakan new Exception().getStackTrace(); untuk mendapatkan maklumat tindanan panggilan untuk menentukan sama ada kaedah itu dipanggil oleh kelas yang ditentukan. Ini menghapuskan keperluan untuk memaksa dan menulis kaedah khusus subkelas.

Tetapi pendekatan ini akan menjana banyak memori sampah dan kerap menyebabkan GC, jadi pertimbangkan untuk menggunakan kaedah pertama untuk menanganinya. GC,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPagerTetapi pemindahan paksa sentiasa agak tidak menyenangkan, dan rasanya seperti tiada kebolehgunaan semula. (Walaupun ia adalah kerana kod yang buruk... dan kebolehgunaan semula subViewPager juga dikurangkan dengan melakukan ini) Jadi saya ingin bertanya sama ada terdapat cara untuk membuat kaedah yang sama dipanggil dalam cara yang berbeza Adakah terdapat cara untuk melaksanakan operasi yang berbeza dengan anggun?

淡淡烟草味
淡淡烟草味

membalas semua(2)
大家讲道理

Adakah ia cukup untuk subViewPager untuk mengatasi getCurrentItem()? .

学霸

Saya telah melihat penyelesaian pelaksanaan perpustakaan yang serupa Jika logik perniagaan yang dikembalikan oleh panggilan dalaman dan luaran kaedah anda tidak konsisten, adalah disyorkan untuk menentukan kaedah tambahan...contohnya getCurrentRealItem()

.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan