aio*_*obe 400
您可能想要查看观察者模式.
以下是一些示例代码:
import java.util.*;
// An interface to be implemented by everyone interested in "Hello" events
interface HelloListener {
    void someoneSaidHello();
}
// Someone who says "Hello"
class Initiater {
    private List<HelloListener> listeners = new ArrayList<HelloListener>();
    public void addListener(HelloListener toAdd) {
        listeners.add(toAdd);
    }
    public void sayHello() {
        System.out.println("Hello!!");
        // Notify everybody that may be interested.
        for (HelloListener hl : listeners)
            hl.someoneSaidHello();
    }
}
// Someone interested in "Hello" events
class Responder implements HelloListener {
    @Override
    public void someoneSaidHello() {
        System.out.println("Hello there...");
    }
}
class Test {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();
        initiater.addListener(responder);
        initiater.sayHello();  // Prints "Hello!!!" and "Hello there..."
    }
}
相关文章:Java:创建自定义事件
Gla*_*ost 21
您可以通过3种不同的方式进行设置:
Thrower 代替 CatcherCatcher 代替 ThrowerThrower并且Catcher在此示例中的另一个类内部Test工作GITHUB示例I CITING默认为选项3,尝试其他人只需取消注释Optional要成为主要类的""代码块,并将该类设置为文件中的${Main-Class}变量build.xml:
投掷边码所需的4件事:
import java.util.*;//import of java.util.event
//Declaration of the event's interface type, OR import of the interface,
//OR declared somewhere else in the package
interface ThrowListener {
    public void Catch();
}
/*_____________________________________________________________*/class Thrower {
//list of catchers & corresponding function to add/remove them in the list
    List<ThrowListener> listeners = new ArrayList<ThrowListener>();
    public void addThrowListener(ThrowListener toAdd){ listeners.add(toAdd); }
    //Set of functions that Throw Events.
        public void Throw(){ for (ThrowListener hl : listeners) hl.Catch();
            System.out.println("Something thrown");
        }
////Optional: 2 things to send events to a class that is a member of the current class
. . . go to github link to see this code . . .
}
2类文件中从类接收事件所需的东西
/*_______________________________________________________________*/class Catcher
implements ThrowListener {//implement added to class
//Set of @Override functions that Catch Events
    @Override public void Catch() {
        System.out.println("I caught something!!");
    }
////Optional: 2 things to receive events from a class that is a member of the current class
. . . go to github link to see this code . . .
}
以下不完全相同但相似,我正在寻找一个片段来添加对接口方法的调用,但发现了这个问题,所以我决定为那些像我一样搜索它并发现这个问题的人添加这个片段:
 public class MyClass
 {
        //... class code goes here
        public interface DataLoadFinishedListener {
            public void onDataLoadFinishedListener(int data_type);
        }
        private DataLoadFinishedListener m_lDataLoadFinished;
        public void setDataLoadFinishedListener(DataLoadFinishedListener dlf){
            this.m_lDataLoadFinished = dlf;
        }
        private void someOtherMethodOfMyClass()
        {
            m_lDataLoadFinished.onDataLoadFinishedListener(1);
        }    
    }
用法如下:
myClassObj.setDataLoadFinishedListener(new MyClass.DataLoadFinishedListener() {
            @Override
            public void onDataLoadFinishedListener(int data_type) {
                }
            });
| 归档时间: | 
 | 
| 查看次数: | 247218 次 | 
| 最近记录: |