Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. class InstrumentedHashSet extends HashSet{
  2. private int addCount = 0;
  3. //Пропуск конструктора. Перейдем к сути
  4. //…
  5. public boolean add(Object o){
  6. addCount++;
  7. super.add(o);
  8. }
  9. public boolean addAll(Collection c){
  10. addCount+=c.size();
  11. super.addAll(c);
  12. }
  13. //… Другие методы
  14. }
  15.  
  16. class Subclass extends ParentNew{
  17. Date date;
  18. Subclass(){
  19. date = new Date();
  20. parentMethodThatOverrides();//вызывает переписанный метод, все в порядке
  21. }
  22. //…
  23. @Override
  24. public void parentMethodThatOverrides(){
  25. System.out.println("date in incorrect method: "+date);
  26. }
  27. }
  28. class ParentNew{
  29. ParentNew(){
  30. parentMethodThatOverrides();//вызывает не свой, а переписанный метод!
  31. }
  32. public void parentMethodThatOverrides(){}
  33. }
  34.  
  35. class InstrumentedHashSet{
  36. private int addCount = 0;
  37. HashSet hashSet;
  38. //…
  39. InstrumentedHashSet(Collection c){
  40. hashSet = new HashSet(c);
  41. }
  42. //...
  43. public boolean add(Object o){
  44. addCount++;
  45. return hashSet.add(o);
  46. }
  47. public boolean addAll(Collection c){
  48. addCount+=c.size();
  49. return hashSet.addAll(c);
  50. }
  51. //… Другие методы
  52. }
  53.  
  54. class Wrapper implements SomethingWithCallback {
  55. private final WrappedObject wrappedObject;
  56. //...
  57. @Override
  58. public void doSomething() {
  59. wrappedObject.doSomething();
  60. }
  61. @Override
  62. public void call() {
  63. System.out.println("Wrapper callback!");
  64. }
  65. //...
  66. }
  67. class WrappedObject implements SomethingWithCallback {
  68. private final SomeService service;
  69. //...
  70. @Override
  71. public void doSomething() {
  72. service.callSelf(this); // Комментарий
  73. }
  74. @Override
  75. public void call() {
  76. System.out.println("WrappedObject callback!");
  77. }
  78. //...
  79. }
  80. class SomeService{
  81. void callSelf(WrappedObject Object){
  82. Object.call();
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement