Commit 3418a3d1 authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch10b] Examples for generic methods

parent e15012a6
Loading
Loading
Loading
Loading
+13 −0
Changes for src/main/java/ch10b/TestGenerics3.java: 13 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,11 @@ public class TestGenerics3 {

    List<Dog> dogs = List.of(new Dog(), new Dog());
    takeAnimals(dogs);

    List<Dog> vaccinatedDogs = getUniqueAnimals(dogs);
    System.out.println(vaccinatedDogs);
    List<? extends Animal> uniqueAnimals2 = getUniqueAnimals2(dogs);
    System.out.println(uniqueAnimals2);
  }

  public void takeAnimals(List<? extends Animal> animals) {
@@ -26,6 +31,14 @@ public class TestGenerics3 {
      a.eat();
    }
  }

  public <T extends Animal> List<T> getUniqueAnimals(List<T> animals) {
    return new ArrayList<>(animals);
  }

  public List<? extends Animal> getUniqueAnimals2(List<? extends Animal> animals) {
    return List.of(new Cat());
  }
}


+33 −0
Changes for src/main/java/ch10b/TestGenerics4.java: 33 added lines, 0 removed lines.
Original line number Diff line number Diff line
package ch10b;

import java.util.*;

public class TestGenerics4 {
  public static void main(String[] args) {
    new TestGenerics4().go();
  }

  public void go() {
    List<Dog> dogs = List.of(new Dog(), new Dog());
    List<Dog> vaccinatedDogs = takeAnimals(dogs);
    System.out.println(vaccinatedDogs);

    List<Animal> animals = List.of(new Dog(), new Cat(), new Dog());
    List<Animal> vaccinatedAnimals = takeAnimals(animals);
    System.out.println(vaccinatedAnimals);

    List<? extends Animal> vaccinatedSomethings = takeAnimals2(dogs);
    System.out.println(vaccinatedSomethings);
  }

  public <T extends Animal> List<T> takeAnimals(List<T> animals) {
    return new ArrayList<>(animals);
  }

  public List<? extends Animal> takeAnimals2(List<? extends Animal> animals) {
    return List.of(new Cat());
  }
}