View Javadoc
1   /*
2   GenericWhitespace
3   
4   
5   */
6   
7   package com.puppycrawl.tools.checkstyle.checks.whitespace.genericwhitespace;
8   
9   import java.lang.annotation.Target;
10  
11  import static java.lang.annotation.ElementType.TYPE_USE;
12  
13  public class InputGenericWhitespaceAfterNew {
14      public class Inner<T> { }
15  
16      Object obj1 = new <String>Object();
17      Object obj2 = new <String> Object(); // violation, ''>' is followed by whitespace.'
18  
19      void method() {
20          new <@A Inner>Inner();
21          new< @A Inner > Inner ();
22          // 4 violations above:
23          //                    ''<' is followed by whitespace.'
24          //                    ''<' is not preceded with whitespace.'
25          //                    ''>' is followed by whitespace.'
26          //                    ''>' is preceded with whitespace.'
27  
28          new <@A Inner> @A Inner<@A Inner>(); // violation, ''>' is followed by whitespace.'
29      }
30  
31      void popCan() {
32          Can.Pop cannot = new <String>Can.Pop();
33          Can.Pop burstCan = new< String > Can.Pop();
34          // 4 violations above:
35          //                    ''<' is followed by whitespace.'
36          //                    ''<' is not preceded with whitespace.'
37          //                    ''>' is followed by whitespace.'
38          //                    ''>' is preceded with whitespace.'
39  
40          //                 +       +                   +    + + ++                  +      +
41          Can.must("idk", new<Can<Can< @A Inner<Can<Can<?> [] >>> >> Can.Pop.But.Wont <String> ());
42          // 9 violations above:
43          //                    ''<' is not preceded with whitespace.'
44          //                    ''<' is followed by whitespace.'
45          //                    ''>' is followed by whitespace.'
46          //                    ''>' is preceded with whitespace.'
47          //                    ''>' is followed by whitespace.'
48          //                    ''>' is preceded with whitespace.'
49          //                    ''>' is followed by whitespace.'
50          //                    ''<' is preceded with whitespace.'
51          //                    ''>' is followed by whitespace.'
52      }
53  
54      @Target({TYPE_USE}) @interface A {}
55  }
56  
57  class Can<T> {
58      static <T> void must(String why, T whatever) {}
59      static class Pop {
60          static class But {
61              static class Wont<T> {
62              }
63          }
64      }
65  }