fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. // template pro udalosti
  8. class EventTemplate<T extends EventListener> {
  9. protected List<EventListener> listeners = new ArrayList();
  10.  
  11. public void addListener(T listener) {
  12. listeners.add(listener);
  13. }
  14.  
  15. public void removeListener(T listener) {
  16. listeners.remove(listener);
  17. }
  18. }
  19.  
  20. // deklarace udalosti pro tridu Numbers
  21. interface NumbersListener extends EventListener {
  22. void numberChanged(int num);
  23. }
  24.  
  25. // trida Numbers, kde pouzivam udalost/i
  26. class Numbers
  27. {
  28. public final NumberHandler event = new NumberHandler();
  29. private int num = 0;
  30.  
  31. public void setNumber(int num) {
  32. this.num = num;
  33. event.fireNumberChanged(num);
  34. }
  35.  
  36. // vnitřní třída handleru pro udalosti
  37. public class NumberHandler extends EventTemplate<NumberListener> {
  38. private void fireNumberChanged(int num) {
  39. for (NumberListener listener : listeners) {
  40. listener.numberChanged(num);
  41. }
  42. }
  43. }
  44. }
  45.  
  46. class Ideone
  47. {
  48. public static void main(String[] args)
  49. {
  50. Numbers n = new Numbers();
  51.  
  52. n.event.addListener(new NumberListener()
  53. {
  54. @override
  55. public void numberChanged(int num) {
  56. System.out.println(num);
  57. }
  58. });
  59.  
  60. // nastaví číslo a zavola udalost
  61. n.setnumber(100);
  62. }
  63. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:37: error: cannot find symbol
	public class NumberHandler extends EventTemplate<NumberListener> {
	                                                 ^
  symbol:   class NumberListener
  location: class Numbers
Main.java:39: error: cannot find symbol
			for (NumberListener listener : listeners) {
			     ^
  symbol:   class NumberListener
  location: class Numbers.NumberHandler
Main.java:52: error: cannot find symbol
		n.event.addListener(new NumberListener()
		                        ^
  symbol:   class NumberListener
  location: class Ideone
Main.java:61: error: cannot find symbol
		n.setnumber(100);
		 ^
  symbol:   method setnumber(int)
  location: variable n of type Numbers
Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
4 errors
stdout
Standard output is empty