久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <tfoot id='y0Az2'></tfoot>

        <bdo id='y0Az2'></bdo><ul id='y0Az2'></ul>
    1. <small id='y0Az2'></small><noframes id='y0Az2'>

        <i id='y0Az2'><tr id='y0Az2'><dt id='y0Az2'><q id='y0Az2'><span id='y0Az2'><b id='y0Az2'><form id='y0Az2'><ins id='y0Az2'></ins><ul id='y0Az2'></ul><sub id='y0Az2'></sub></form><legend id='y0Az2'></legend><bdo id='y0Az2'><pre id='y0Az2'><center id='y0Az2'></center></pre></bdo></b><th id='y0Az2'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='y0Az2'><tfoot id='y0Az2'></tfoot><dl id='y0Az2'><fieldset id='y0Az2'></fieldset></dl></div>
        <legend id='y0Az2'><style id='y0Az2'><dir id='y0Az2'><q id='y0Az2'></q></dir></style></legend>

        從普通 Java 事件創(chuàng)建 Observable

        Creating Observable from normal Java events(從普通 Java 事件創(chuàng)建 Observable)

          <small id='06ROC'></small><noframes id='06ROC'>

                <bdo id='06ROC'></bdo><ul id='06ROC'></ul>
                  <tbody id='06ROC'></tbody>

                • <legend id='06ROC'><style id='06ROC'><dir id='06ROC'><q id='06ROC'></q></dir></style></legend>
                  <i id='06ROC'><tr id='06ROC'><dt id='06ROC'><q id='06ROC'><span id='06ROC'><b id='06ROC'><form id='06ROC'><ins id='06ROC'></ins><ul id='06ROC'></ul><sub id='06ROC'></sub></form><legend id='06ROC'></legend><bdo id='06ROC'><pre id='06ROC'><center id='06ROC'></center></pre></bdo></b><th id='06ROC'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='06ROC'><tfoot id='06ROC'></tfoot><dl id='06ROC'><fieldset id='06ROC'></fieldset></dl></div>

                • <tfoot id='06ROC'></tfoot>
                  本文介紹了從普通 Java 事件創(chuàng)建 Observable的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  從經(jīng)典 Java 事件模式創(chuàng)建 Rx-Java Observable 的最佳方法是什么?也就是說,給定

                  What is the best way to create an Rx-Java Observable from the classical Java event pattern? That is, given

                  class FooEvent { ... }
                  
                  interface FooListener {
                    void fooHappened(FooEvent arg);
                  }
                  
                  class Bar {
                    public void addFooListener(FooListener l);
                    public void removeFooListener(FooListener l);
                  }
                  

                  我要實(shí)現(xiàn)

                  Observable<FooEvent> fooEvents(Bar bar);
                  

                  我想出的實(shí)現(xiàn)是:

                  Observable<FooEvent> fooEvents(Bar bar) {
                    return Observable.create(new OnSubscribeFunc<FooEvent>() {
                      public Subscription onSubscribe(Observer<? super FooEvent> obs) {
                        FooListener l = new FooListener() {
                          public void fooHappened(FooEvent arg) {
                            obs.onNext(arg);
                          }
                        };
                  
                        bar.addFooListener(l);
                  
                        return new Subscription() {
                          public void unsubscribe() {
                            bar.removeFooListener(l);
                          }
                        };
                      }
                    }); 
                  }
                  

                  不過,我不是很喜歡:

                  1. 很冗長;

                  1. it's quite verbose;

                  每個 Observer 都需要一個監(jiān)聽器(理想情況下,如果沒有觀察者,則應(yīng)該沒有監(jiān)聽器,否則只有一個監(jiān)聽器).這可以通過將觀察者計數(shù)保留為 OnSubscribeFunc 中的一個字段,在訂閱時遞增,在取消訂閱時遞減.

                  requires a listener per Observer (ideally there should be no listeners if there are no observers, and one listener otherwise). This can be improved by keeping an observer count as a field in the OnSubscribeFunc, incrementing it on subscribe and decrementing on unsubscribe.

                  有沒有更好的解決方案?

                  Is there a better solution?

                  要求:

                  1. 使用現(xiàn)有的事件模式實(shí)現(xiàn)而不更改它們(如果我正在控制該代碼,我已經(jīng)可以編寫它以返回我需要的 Observable).

                  如果/當(dāng)源 API 更改時會出現(xiàn)編譯器錯誤.不能使用 Object 而不是實(shí)際的事件參數(shù)類型或?qū)傩悦Q字符串.

                  Getting compiler errors if/when the source API changes. No working with Object instead of actual event argument type or with property name strings.

                  推薦答案

                  我認(rèn)為沒有辦法為每個可能的事件創(chuàng)建一個通用的 observable,但你當(dāng)然可以在任何需要的地方使用它們.

                  I don't think there's a way to create a generic observable for every possible event, but you can certainly use them wherever you need.

                  RxJava 源代碼有一些方便的示例,說明如何從鼠標(biāo)事件、按鈕事件等創(chuàng)建可觀察對象.看看這個類,它從 KeyEvents 創(chuàng)建它們:KeyEventSource.java.

                  The RxJava source has some handy examples of how to create observables from mouse events, button events, etc. Take a look at this class, which creates them from KeyEvents: KeyEventSource.java.

                  這篇關(guān)于從普通 Java 事件創(chuàng)建 Observable的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  How can I detect integer overflow on 32 bits int?(如何檢測 32 位 int 上的整數(shù)溢出?)
                  Local variables before return statements, does it matter?(return 語句之前的局部變量,這有關(guān)系嗎?)
                  How to convert Integer to int?(如何將整數(shù)轉(zhuǎn)換為整數(shù)?)
                  How do I create an int array with randomly shuffled numbers in a given range(如何在給定范圍內(nèi)創(chuàng)建一個隨機(jī)打亂數(shù)字的 int 數(shù)組)
                  Inconsistent behavior on java#39;s ==(java的行為不一致==)
                  Why is Java able to store 0xff000000 as an int?(為什么 Java 能夠?qū)?0xff000000 存儲為 int?)

                    <legend id='kM5VE'><style id='kM5VE'><dir id='kM5VE'><q id='kM5VE'></q></dir></style></legend>

                    <small id='kM5VE'></small><noframes id='kM5VE'>

                    <i id='kM5VE'><tr id='kM5VE'><dt id='kM5VE'><q id='kM5VE'><span id='kM5VE'><b id='kM5VE'><form id='kM5VE'><ins id='kM5VE'></ins><ul id='kM5VE'></ul><sub id='kM5VE'></sub></form><legend id='kM5VE'></legend><bdo id='kM5VE'><pre id='kM5VE'><center id='kM5VE'></center></pre></bdo></b><th id='kM5VE'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='kM5VE'><tfoot id='kM5VE'></tfoot><dl id='kM5VE'><fieldset id='kM5VE'></fieldset></dl></div>
                    • <bdo id='kM5VE'></bdo><ul id='kM5VE'></ul>

                        <tfoot id='kM5VE'></tfoot>

                            <tbody id='kM5VE'></tbody>
                          • 主站蜘蛛池模板: 91网在线观看 | av色在线| 亚洲综合在线视频 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 国内精品视频在线观看 | 日韩中文字幕在线视频 | 国产日韩精品一区 | 亚洲日产精品 | 亚洲精品在线国产 | 久草在线青青草 | 日本激情视频在线播放 | 国产精品视频999 | 成人精品一区二区户外勾搭野战 | 一区二区三区在线电影 | 男人天堂视频在线观看 | 精品一区二区久久久久久久网站 | 欧美精品一区二区三区在线播放 | a在线v| 全免费a级毛片免费看视频免费下 | 丁香婷婷成人 | 久久久久国产一区二区三区四区 | 国产精品久久久亚洲 | a级片在线观看 | 国产高清免费视频 | 一区二区三区播放 | 欧美日韩中文字幕 | av中文字幕在线观看 | 成人二区三区 | 一区二区三区精品视频 | 91网站在线观看视频 | 欧美一区二区三区在线观看视频 | 精品国产一区二区三区久久久四川 | 美女黄网 | 瑟瑟视频在线看 | 精品久久久av | 亚洲麻豆 | 国产一级一片免费播放 | 国产精品视频免费看 | 国产精华一区 | 中文字幕视频在线免费 |