찾다

 >  Q&A  >  본문

java - 동일한 메소드에 대해 서로 다른 소스의 호출을 다르게 처리하는 우아한 방법이 있습니까?

컨트롤을 작성할 때.
이 컨트롤의 특정 좌표를 얻는 것을 의미하는 클래스subViewPager继承了ViewPager,我在另外一个地方需要用到这个ViewPagergetCurrentItem()메서드가 있습니다.

근데 나 때문에ViewPager为了特殊效果,就让它的getCurrentItem()返回的坐标有可能超出了我数据集合的长度size,

예를 들어, 내 데이터 세트의 길이는 size = 1024size = 1024
getCurrentItem()返回的是40280이고 getCurrentItem()40280

을 반환합니다.

그래서 내가 적극적으로 그 사람에게 전화를 하면, 그 사람이 이 좌표%=size : 4028%1024의 결과를 나에게 돌려줄 수 있기를 바랍니다.

그의 getCurrentItem()方法被系统调用时应该返回应该是40280숫자도 이렇습니다.

원래 접근 방식은 이 %=size 결과를 얻기 위한 특별한 방법을 작성하는 것이었습니다. 이 매개변수를 가져와야 할 때 강제로 실행하세요.

나중에 이를 약간 변경하고 new Exception().getStackTrace();를 사용하여 지정된 클래스에 의해 메서드가 호출되었는지 확인하기 위한 호출 스택 정보를 얻었습니다. 이렇게 하면 하위 클래스별 메서드를 강제로 작성하고 작성할 필요가 없습니다.

그러나 이 접근 방식은 많은 가비지 메모리를 생성하고 GC를 자주 발생시키므로 첫 번째 방법을 사용하여 처리하는 것이 좋습니다. GC,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager하지만 강제 전송은 항상 좀 불편하고 재사용성이 없는 것 같은 느낌이 듭니다. (비록 코드가 좋지 않기 때문이지만... 이렇게 하면 subViewPager의 재사용성도 떨어집니다.) 그래서 동일한 메서드를 다른 메서드에서 호출할 수 있는 방법이 있는지 묻고 싶었습니다. 다양한 작업을 정상적으로 수행할 수 있는 방법이 있나요?

淡淡烟草味淡淡烟草味2699일 전1245

모든 응답(2)나는 대답할 것이다

  • 大家讲道理

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

    subViewPager가 getCurrentItem()을 재정의하는 것만으로는 충분하지 않나요? .

    회신하다
    0
  • 欧阳克

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

    유사한 라이브러리의 구현 솔루션을 본 적이 있습니다. 메서드의 내부 및 외부 호출에서 반환된 비즈니스 로직이 일관되지 않으면 추가 메서드를 정의하는 것이 좋습니다...예를 들어 getCurrentRealItem()

    회신하다
    0
  • 취소회신하다