View Javadoc
1   /*
2   FinalClass
3   
4   
5   */
6   
7   package com.puppycrawl.tools.checkstyle.checks.design.finalclass;
8   
9   import java.util.ArrayList;
10  
11  public class InputFinalClass // violation
12  {
13      private InputFinalClass() {}
14  }
15  
16  final class test2 {}
17  class test3
18  {
19     class test4 // violation
20     {
21         private test4() {}
22     }
23  }
24  
25  class test5
26  {
27      private test5() {}
28      test5(int i) {}
29  }
30  
31  class test6
32  {
33      public test6() {}
34  }
35  
36  final class test7 {
37      private test7() {}
38  }
39  
40  // Typesafe enum with operation
41  // abstract classes cannot be final, see bug #837012
42  abstract class Operation
43  {
44      abstract double eval(double a, double b);
45  
46      public static final Operation PLUS =
47  new Operation("+")
48  {
49      double eval(double a, double b)
50      {
51  return a + b;
52      }
53  };
54  
55      public static final Operation MINUS =
56  new Operation("-")
57  {
58      double eval(double a, double b)
59      {
60  return a - b;
61      }
62  };
63  
64      private String _name;
65      private Operation(String name)
66      {
67  this._name = name;
68      }
69  }
70  
71  // Typesafe enum with operation
72  // abstract classes cannot be final, see bug #837012
73  interface Evaluable
74  {
75      double eval(double a, double b);
76  }
77  
78  // abstract class without its own abstract method decl
79  abstract class Operation2 implements Evaluable
80  {
81  
82      public static final Operation2 PLUS =
83  new Operation2("+")
84  {
85      public double eval(double a, double b)
86      {
87  return a + b;
88      }
89  };
90  
91      public static final Operation2 MINUS =
92  new Operation2("-")
93  {
94      public double eval(double a, double b)
95      {
96  return a - b;
97      }
98  };
99  
100     private String _name;
101     private Operation2(String name)
102     {
103 this._name = name;
104     }
105 }
106 
107 enum testenum1
108 {
109     A, B;
110     testenum1() {}
111 }
112 
113 enum testenum2
114 {
115     A, B;
116 
117     public static class someinnerClass // violation
118     {
119         private someinnerClass() {}
120     }
121 }
122 
123 interface TestInterface {
124     class SomeClass { // violation
125         private SomeClass() {}
126     }
127 }
128 
129 @interface SomeAnnotation {
130     class SomeClass { // violation
131         private SomeClass() {}
132     }
133 }
134 
135 class TestAnonymousInnerClasses {
136     public static final TestAnonymousInnerClasses ONE = new TestAnonymousInnerClasses() {
137         @Override
138         public int value() {
139             return 1;
140         }
141     };
142 
143     private TestAnonymousInnerClasses() {
144     }
145 
146     public int value() {
147         return 0;
148     }
149 }
150 
151 class TestNewKeyword { // violation
152 
153     private TestNewKeyword(String s) {
154         String a = "hello" + s;
155     }
156 
157     public int count() {
158         return 1;
159     }
160     public static final TestNewKeyword ONE = new TestNewKeyword("world");
161     public static final test6 TWO = new test6() {
162     };
163 
164     public static void main(String[] args) {
165         ArrayList<String> foo = new ArrayList<>();
166         foo.add("world");
167         foo.forEach(TestNewKeyword::new);
168     }
169 }
170 
171 interface TestNewKeywordInsideInterface {
172     ArrayList<String> foo = new ArrayList<>();
173 }
174 
175 // abstract classes cannot be final
176 abstract class TestPrivateCtorInAbstractClasses {
177     private TestPrivateCtorInAbstractClasses() {
178     }
179 }
180 
181 class TestAnonymousInnerClassInsideNestedClass {
182     private TestAnonymousInnerClassInsideNestedClass() { }
183 
184     static class NestedClass { // violation
185 
186         public final static TestAnonymousInnerClassInsideNestedClass ONE
187                 = new TestAnonymousInnerClassInsideNestedClass() {
188         };
189 
190         private NestedClass() {}
191     }
192     static class NestedClass2 {
193 
194         private NestedClass2() {}
195 
196         public static final test6  ONE = new test6() {
197 
198             public final NestedClass2 ONE = new NestedClass2() {
199 
200             };
201         };
202     }
203 }
204