Creating Observable from normal Java events

前端 未结 4 2075
花落未央
花落未央 2020-12-30 00:15

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

class FooEvent { ... }

interface Foo         


        
4条回答
  •  借酒劲吻你
    2020-12-30 00:56

    If you want something simple and built in, give this approach a try http://examples.javacodegeeks.com/core-java/beans/bean-property-change-event-listener/

    java.beans.PropertyChangeEvent;
    java.beans.PropertyChangeListener;
    java.beans.PropertyChangeSupport;
    

    From the site, there´s a snippet that shows how to use it

    package com.javacodegeeks.snippets.core;
    
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
    
    public class BeanPropertyChangeEventListener {
    
        public static void main(String[] args) throws Exception {
    
            Bean bean = new Bean();
            bean.addPropertyChangeListener(new MyPropertyChangeListener());
    
            bean.setProperty1("newProperty1");
            bean.setProperty2(123);
    
    
            bean.setProperty1("newnewProperty1");
            bean.setProperty2(234);
    
        }
    
        public static class MyPropertyChangeListener implements PropertyChangeListener {
            // This method is called every time the property value is changed
            public void propertyChange(PropertyChangeEvent evt) {
                System.out.println("Name = " + evt.getPropertyName());
    
      System.out.println("Old Value = " + evt.getOldValue());
    
      System.out.println("New Value = " + evt.getNewValue());
    
      System.out.println("**********************************");
            }
        }
    
        public static class Bean {
    
            private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
    
            // Property property1
            private String property1;
            // Property property2
            private int property2;
    
            public String getProperty1() {
                return property1;
            }
            public void setProperty1(String property1) {
                pcs.firePropertyChange("property1", this.property1, property1);
                this.property1 = property1;
            }
    
            public int getProperty2() {
                return property2;
            }
            public void setProperty2(int property2) {
                pcs.firePropertyChange("property2", this.property2, property2);
                this.property2 = property2;
            }
    
            public void addPropertyChangeListener(PropertyChangeListener listener) {
                pcs.addPropertyChangeListener(listener);
            }
    
        }
    
    }
    

    it´s pretty simple

提交回复
热议问题