1   package com.puppycrawl.tools.checkstyle.checks.coding.illegaltype;
2   
3   import java.io.Serializable;
4   import java.util.Map;
5   import java.util.Set;
6   import java.util.TreeSet;
7   import java.util.function.Consumer;
8   
9   /**
10   * This test-input is intended to be checked using following configuration:
11   *
12   * illegalClassNames = {Boolean, Foo, Serializable}
13   * memberModifiers = {LITERAL_PUBLIC, FINAL}
14   *
15   */
16  public abstract class InputIllegalTypeGenerics {
17  
18      private Set<Boolean> privateSet; // OK
19      private java.util.List<Map<Boolean, Foo>> privateList; // OK
20      public Set<Boolean> set; // warn
21      public java.util.List<Map<Boolean, Foo>> list; // warn
22  
23      private void methodCall() {
24          Bounded.<Boolean>foo(); // warn
25          final Consumer<Foo> consumer = Foo<Boolean>::foo; // warn
26      }
27  
28      public <T extends Boolean, U extends Serializable> void typeParameter(T a) {} // warn
29  
30      public void fullName(java.util.ArrayList<? super Boolean> a) {} // warn
31  
32      public abstract Set<Boolean> shortName(Set<? super Set<Boolean>> a); // warn
33  
34      public Set<? extends Foo<Boolean>> typeArgument() { // warn
35          return new TreeSet<Foo<Boolean>>(); // OK
36      }
37  
38      public class MyClass<Foo extends Boolean> {} // warn
39  
40  }
41  
42  class Bounded {
43  
44      public boolean match = new TreeSet<Integer>().stream()
45              .allMatch(new TreeSet<>()::add); // OK
46  
47      public static <Boolean> void foo() {} // warn
48  
49  }
50  
51  class Foo<T extends Boolean & Serializable> { // OK
52  
53      void foo() {}
54  
55  }
56  
57  @interface Annotation {
58  
59      Class<? extends Boolean>[] nonPublic(); // OK
60      public Class<? extends Boolean>[] value(); // warn
61  
62  }