4343
4444public final class OperationWindow extends ChunkedOperation {
4545
46- public static final Func0 WINDOW_MAKER = new Func0 () {
47- @ Override
48- public Object call () {
49- return new Window ();
50- }
51- };
46+ public static <T > Func0 <Window <T >> windowMaker () {
47+ return new Func0 <Window <T >>() {
48+ @ Override
49+ public Window <T > call () {
50+ return new Window <T >();
51+ }
52+ };
53+ }
5254
5355 /**
5456 * <p>This method creates a {@link rx.util.functions.Func1} object which represents the window operation. This operation takes
@@ -74,7 +76,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
7476 return new OnSubscribeFunc <Observable <T >>() {
7577 @ Override
7678 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
77- NonOverlappingChunks <T , Observable <T >> windows = new NonOverlappingChunks <T , Observable <T >>(observer , WINDOW_MAKER );
79+ NonOverlappingChunks <T , Observable <T >> windows = new NonOverlappingChunks <T , Observable <T >>(observer , windowMaker () );
7880 ChunkCreator creator = new ObservableBasedSingleChunkCreator <T , Observable <T >>(windows , windowClosingSelector );
7981 return source .subscribe (new ChunkObserver <T , Observable <T >>(windows , observer , creator ));
8082 }
@@ -111,7 +113,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
111113 return new OnSubscribeFunc <Observable <T >>() {
112114 @ Override
113115 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
114- OverlappingChunks <T , Observable <T >> windows = new OverlappingChunks <T , Observable <T >>(observer , WINDOW_MAKER );
116+ OverlappingChunks <T , Observable <T >> windows = new OverlappingChunks <T , Observable <T >>(observer , windowMaker () );
115117 ChunkCreator creator = new ObservableBasedMultiChunkCreator <T , Observable <T >>(windows , windowOpenings , windowClosingSelector );
116118 return source .subscribe (new ChunkObserver <T , Observable <T >>(windows , observer , creator ));
117119 }
@@ -166,7 +168,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
166168 return new OnSubscribeFunc <Observable <T >>() {
167169 @ Override
168170 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
169- Chunks <T , Observable <T >> chunks = new SizeBasedChunks <T , Observable <T >>(observer , WINDOW_MAKER , count );
171+ Chunks <T , Observable <T >> chunks = new SizeBasedChunks <T , Observable <T >>(observer , windowMaker () , count );
170172 ChunkCreator creator = new SkippingChunkCreator <T , Observable <T >>(chunks , skip );
171173 return source .subscribe (new ChunkObserver <T , Observable <T >>(chunks , observer , creator ));
172174 }
@@ -221,7 +223,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
221223 return new OnSubscribeFunc <Observable <T >>() {
222224 @ Override
223225 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
224- NonOverlappingChunks <T , Observable <T >> windows = new NonOverlappingChunks <T , Observable <T >>(observer , WINDOW_MAKER );
226+ NonOverlappingChunks <T , Observable <T >> windows = new NonOverlappingChunks <T , Observable <T >>(observer , windowMaker () );
225227 ChunkCreator creator = new TimeBasedChunkCreator <T , Observable <T >>(windows , timespan , unit , scheduler );
226228 return source .subscribe (new ChunkObserver <T , Observable <T >>(windows , observer , creator ));
227229 }
@@ -282,7 +284,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
282284 return new OnSubscribeFunc <Observable <T >>() {
283285 @ Override
284286 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
285- Chunks <T , Observable <T >> chunks = new TimeAndSizeBasedChunks <T , Observable <T >>(observer , WINDOW_MAKER , count , timespan , unit , scheduler );
287+ Chunks <T , Observable <T >> chunks = new TimeAndSizeBasedChunks <T , Observable <T >>(observer , windowMaker () , count , timespan , unit , scheduler );
286288 ChunkCreator creator = new SingleChunkCreator <T , Observable <T >>(chunks );
287289 return source .subscribe (new ChunkObserver <T , Observable <T >>(chunks , observer , creator ));
288290 }
@@ -343,7 +345,7 @@ public static <T> OnSubscribeFunc<Observable<T>> window(final Observable<T> sour
343345 return new OnSubscribeFunc <Observable <T >>() {
344346 @ Override
345347 public Subscription onSubscribe (final Observer <? super Observable <T >> observer ) {
346- OverlappingChunks <T , Observable <T >> windows = new TimeBasedChunks <T , Observable <T >>(observer , WINDOW_MAKER , timespan , unit , scheduler );
348+ OverlappingChunks <T , Observable <T >> windows = new TimeBasedChunks <T , Observable <T >>(observer , windowMaker () , timespan , unit , scheduler );
347349 ChunkCreator creator = new TimeBasedChunkCreator <T , Observable <T >>(windows , timeshift , unit , scheduler );
348350 return source .subscribe (new ChunkObserver <T , Observable <T >>(windows , observer , creator ));
349351 }
@@ -373,7 +375,6 @@ public static class UnitTest {
373375 private TestScheduler scheduler ;
374376
375377 @ Before
376- @ SuppressWarnings ("unchecked" )
377378 public void before () {
378379 scheduler = new TestScheduler ();
379380 }
0 commit comments