fork(1) download
  1. interface Collection<T> {
  2. void add(T t);
  3. void addRange(T[] ts);
  4. }
  5.  
  6. abstract class AbstractCollection<T> implements Collection<T> {
  7. @Override
  8. public void addRange(T[] ts) {
  9. for (T t : ts) {
  10. add(t);
  11. }
  12. }
  13. }
  14.  
  15. class CollectionWithCounter<T> extends AbstractCollection<T> {
  16. int elementsCount = 0;
  17.  
  18. @Override
  19. public void add(T t) {
  20. elementsCount++;
  21. }
  22.  
  23. @Override
  24. public void addRange(T[] ts) {
  25. int currentCount = elementsCount;
  26. super.addRange(ts);
  27. elementsCount = currentCount + ts.length;
  28. }
  29. }
  30.  
  31. class Main {
  32. public static void main(String[] args) {
  33. CollectionWithCounter<Object> cc;
  34.  
  35. cc = new CollectionWithCounter<>();
  36. cc.add(null);
  37. cc.add(null);
  38. cc.add(null);
  39. System.out.println("elementsCount = " + cc.elementsCount);
  40.  
  41. cc = new CollectionWithCounter<>();
  42. cc.addRange(new Object[3]);
  43. System.out.println("elementsCount = " + cc.elementsCount);
  44. }
  45. }
Success #stdin #stdout 0.05s 711168KB
stdin
Standard input is empty
stdout
elementsCount = 3
elementsCount = 3