import java.util.List;
class Animal {
public List<? extends Animal> getAnimals() { // Noncompliant
Collection<?> c = new ArrayList<String>(); // Compliant
}
public List<Animal> getAnimals(){ // Compliant
}
class InnerCat {
public List<? extends Cat> getCats() { // Noncompliant [[sc=17;ec=18]]
}
}
class InnerDog extends Animal {
public List<? extends Animal> getAnimals() { // Compliant method is overriden
return super.getAnimals();
}
public List<Class<?>> foo() {} // Compliant Class is ignored
public List<? extends Class<String>> bar() {} // Noncompliant {{Remove usage of generic wildcard type.}}
private List<? extends Cat> getCats() { //Compliant private method are ignored
}
}
}