Heim  >  Fragen und Antworten  >  Hauptteil

java - Gibt es eine elegante Möglichkeit, Aufrufe aus verschiedenen Quellen für dieselbe Methode unterschiedlich zu behandeln?

Als ich eine Kontrolle schrieb.
Es gibt eine KlassesubViewPager继承了ViewPager,我在另外一个地方需要用到这个ViewPagergetCurrentItem()Methode, die bedeutet, eine bestimmte Koordinate dieser Steuerung zu erhalten.

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

Zum Beispiel beträgt die Länge meines Datensatzes size = 1024size = 1024
getCurrentItem()返回的是40280 und getCurrentItem() gibt 40280 zurück

Wenn ich ihn also aktiv anrufe, hoffe ich, dass er mir das Ergebnis dieser Koordinierung zurückgeben kann %=size : 4028%1024.

Auch seine getCurrentItem()方法被系统调用时应该返回应该是40280Nummern sind so.

Mein ursprünglicher Ansatz bestand darin, eine spezielle Methode zu schreiben, um dieses %=size Ergebnis zu erhalten. Erzwingen Sie es, wenn Sie diesen Parameter benötigen.

Später habe ich es ein wenig geändert und new Exception().getStackTrace(); verwendet, um die Aufrufstapelinformationen abzurufen, um festzustellen, ob die Methode von der angegebenen Klasse aufgerufen wurde. Dadurch entfällt die Notwendigkeit, eine unterklassenspezifische Methode zu erzwingen und zu schreiben.

Aber dieser Ansatz erzeugt viel Speichermüll und verursacht häufig GC, also erwägen Sie die Verwendung der ersten Methode, um damit umzugehen. GC,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPagerAber eine erzwungene Übertragung ist immer etwas unangenehm und es fühlt sich an, als gäbe es keine Wiederverwendbarkeit. (Obwohl es am fehlerhaften Code liegt ... und die Wiederverwendbarkeit von subViewPager dadurch ebenfalls verringert wird) Daher wollte ich fragen, ob es eine Möglichkeit gibt, dieselbe Methode anders aufzurufen Gibt es eine Möglichkeit, verschiedene Operationen ordnungsgemäß auszuführen?

淡淡烟草味淡淡烟草味2688 Tage vor1231

Antworte allen(2)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-07-03 11:44:06

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

    Antwort
    0
  • 欧阳克

    欧阳克2017-07-03 11:44:06

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

    Antwort
    0
  • StornierenAntwort