Advertisement
Guest User

Untitled

a guest
Feb 26th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. abstract class Event {
  2. KeyPress extends Event { ... }
  3. KeyRelease extends Event { ... }
  4. KeyHold extends Event { ... }
  5. // ...
  6. }
  7.  
  8. abstract class AbstractListener {
  9. Set<Class<? extends Event>> eventTypes;
  10. protected abstract boolean respond(Event event);
  11. }
  12.  
  13. class DownKeyListener exteneds AbstractListener {
  14. DownKeyListener () {
  15. // just prepares to register to receive these events. doesn't matter how exactly.
  16. eventTypes.add(KeyPress.class);
  17. eventTypes.add(KeyHold.class);
  18. //no KeyRelease e.g.
  19. }
  20.  
  21. boolean respond(Event event) {
  22. if (event instanceof KeyPress)
  23. return handleKeyPress(event);
  24. else if (event instanceof KeyHold)
  25. return handleKeyHold(event);
  26. return false;
  27. }
  28.  
  29. private boolean handleKeyPress(KeyPress e) { ... }
  30. private boolean handleKeyHold(KeyHold e) { ... }
  31. }
  32.  
  33. abstract class AbstractListener {
  34. Map<Class<? extends Event>, Function<? extends Event, Boolean> map = new ...
  35. // ^ doesn't ensure these event ^: are the same but at least
  36. // that someone responds
  37. // to ensure same event i can do
  38. protected <T extends Event> void register(Class<T> event, Function<T, Boolean> function) {
  39. map.put(event, function);
  40. }
  41.  
  42. protected abstract boolean respond(Event event);
  43. }
  44.  
  45. class DownKeyListener exteneds AbstractListener {
  46. DownKeyListener () {
  47. Map.put(KeyPress.class, keyPressFunction);
  48. Map.put(KeyHold.class, keyHoldFunction);
  49. }
  50.  
  51. boolean respond(Event event) {
  52. Function<? extends Event, Boolean> f = map.get(event.getClass());
  53. return f == null ? false : f.apply(event);
  54. }
  55.  
  56. Function<KeyPress, Boolean> keyPressFunction = event -> ...;
  57. Function<KeyHold, Boolean> keyHoldFunction = event -> ...;
  58. }
  59.  
  60. The method apply(capture#4-of ? extends Event) in the type Function<capture#4-of ? extends Event,Boolean> is not applicable for the arguments (capture#5-of ? extends Event)
  61.  
  62. The method apply(capture#3-of ? extends Event) in the type Function<capture#3-of ? extends Event,Boolean> is not applicable for the arguments (T)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement