Skip to content

Instantly share code, notes, and snippets.

@orekyuu
Created April 4, 2015 15:18
Show Gist options
  • Save orekyuu/1dc0effb790bcca28992 to your computer and use it in GitHub Desktop.
Save orekyuu/1dc0effb790bcca28992 to your computer and use it in GitHub Desktop.
出力: AAA
public interface EventListener {
void onMessage(String message);
}
import java.lang.ref.WeakReference;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class EventManager {
private List<WeakReference<EventListener>> list = new LinkedList<>();
public void addListener(EventListener e) {
list.add(new WeakReference<>(e));
}
public void sendMessage(String message) {
for (Iterator<WeakReference<EventListener>> i = list.iterator(); i.hasNext();) {
WeakReference<EventListener> next = i.next();
EventListener eventListener = next.get();
if (eventListener == null) {
i.remove();
continue;
}
eventListener.onMessage(message);
}
}
}
public class Main implements EventListener {
public static void main(String[] args) throws InterruptedException {
EventManager handler = new EventManager();
Main main = new Main();
handler.addListener(main);
handler.sendMessage("AAA");
main = null;
System.gc();
handler.sendMessage("BBB");
}
@Override
public void onMessage(String message) {
System.out.println(message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment