これを行うには、JavaBeanイベントメカニズムを使用できます。
http://docs.oracle.com/javase/tutorial/javabeans/writing/events.html
これは、リスナーとブロードキャスターが同じJVMで実行されていることを前提としています。
これが私が念頭に置いていたものです:
package io;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.IOException;
import java.io.InputStream;
/**
* BroadcastingInputStream broadcasts to interested listeners when it closes.
* @author Michael
* @since 10/31/12 8:34 PM
* @link http://stackoverflow.com/questions/13169206/possible-in-java-to-create-an-event-when-a-function-is-called-on-a-particular-ob/13169271#comment17920062_13169271
*/
public class BroadcastingInputStream extends InputStream {
private InputStream is;
private PropertyChangeSupport propertyChangeSupport;
public BroadcastingInputStream(InputStream is) {
this.is = is;
this.propertyChangeSupport = new PropertyChangeSupport(this);
}
@Override
public int read() throws IOException {
return this.is.read();
}
public void addCloseListener(PropertyChangeListener closeListener) {
this.propertyChangeSupport.addPropertyChangeListener(closeListener);
}
public void removeCloseListener(PropertyChangeListener closeListener) {
this.propertyChangeSupport.removePropertyChangeListener(closeListener);
}
@Override
public void close() throws IOException {
super.close();
this.propertyChangeSupport.firePropertyChange("closed", false, true);
}
}