java - 同じメソッドに対して、異なるソースからの呼び出しを異なる方法で処理するエレガントな方法はありますか?
淡淡烟草味
淡淡烟草味 2017-07-03 11:42:06
0
2
1118

コントロールを書いていたときのこと。
ViewPager を継承するクラス subViewPager があります。この ViewPagergetCurrentItem() メソッドを別のクラスで使用する必要があります。これは、このコントロールの特定の座標を取得することを意味します。

しかし、私の

ViewPager は特殊効果用であるため、その getCurrentItem() によって返される座標は、データ コレクションの長さ size ,## を超える可能性があります。

#たとえば、データ コレクションの長さは
size = 1024

で、getCurrentItem()
40280# を返します。 ##なので、私が積極的に電話をかけると、座標

%=size: 4028 24
の結果が返ってくるといいですね。

同時に、彼の getCurrentItem()

メソッドは、システムによって呼び出されたときに

40280 のような数値を返す必要があります。 私の当初のアプローチは、%=size

の後に結果を取得する特別なメソッドを記述することでした。このパラメータを取得する必要がある場合は強制的に実行します。

その後、少し変更して、new Exception().getStackTrace();

を使用してコール スタック情報を取得し、メソッドが指定されたクラスによって呼び出されたかどうかを判断しました。これにより、サブクラス固有のメソッドを強制的に作成する必要がなくなります。

ただし、この方法では大量のガベージ メモリが生成され、頻繁に GC

が発生するため、最初の方法で対処することを検討してください。

しかし、強制転送は常に少し不快で、再利用性がないように感じます。 (コードが悪いからですが…これを行うと subViewPager の再利用性も低下します) そこで、同じメソッドを異なるクラスで呼び出す方法があるかどうかを聞きたかったのです。さまざまな操作をスムーズに実行できますか?

淡淡烟草味
淡淡烟草味

全員に返信(2)
大家讲道理

subViewPager重写getCurrentItem()不就可以了吗。。

いいねを押す +0
学霸

看过类似的库的实现方案,如果你的这个方法内部和外部调用的返回的业务逻辑就不统一的话,建议还是额外定义一个方法比较好……比如 getCurrentRealItem()

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!