RxJava:通过将事件源嵌套在Observable.create()中,而不是存储ObservableEmmiter,将回调转换为反应流

RxJava:通过将事件源嵌套在Observable.create()中,而不是存储ObservableEmmiter,将回调转换为反应流,java,android,rx-java,Java,Android,Rx Java,每当人们谈论将回调转换为RxJava风格时,我在这里或其他地方看到的所有答案都建议如下嵌套回调: Observable.create(emitter -> { button.setOnClickListner(View.OnClickListner(){ void onClick(...) { emitter.onNext(value); }

每当人们谈论将回调转换为RxJava风格时,我在这里或其他地方看到的所有答案都建议如下嵌套回调:

Observable.create(emitter -> {
            button.setOnClickListner(View.OnClickListner(){
                   void onClick(...) {
                     emitter.onNext(value);
                   }
            }})
但是下面的也可以,但是从来没有提到过

public class Something{
    static ObservableEmitter<Object> myemitter;
    
    public static void main(String[] args) {
       doS();                
       myemitter.onNext(12);
    }
    
    static void doS() {
         Observable.create(emitter -> {
            myemitter = emitter;
        }).map( v ->{
            System.out.println("this is Map function");
            return v ;
        }).subscribe(v -> {
            System.out.println(v);
        });
    }
}
公共类{
静态可观察发射器;
公共静态void main(字符串[]args){
doS();
myemitter.onNext(12);
}
静态void doS(){
可观察。创建(发射器->{
迈米特=发射器;
}).map(v->{
System.out.println(“这是映射函数”);
返回v;
}).订阅(v->{
系统输出打印Ln(v);
});
}
}
第二个例子的意义在于,一个特定的倾听者不再被反应链所束缚。这意味着我可以将ObservieMitter传递给任何侦听器,然后调用.onNext()


像第二种方法那样做是否有任何不可预见的副作用或负面影响?

它不是线程安全的,
myMitter
是静态的,这意味着您将有很多浮动错误。这里的Mitter是静态变量,因为这里的示例就是我在编写时看到的。所以,我想线程安全已经足够了。考虑将注释添加为答案。