10
10
import com .sun .tools .javac .tree .TreeMaker ;
11
11
import com .sun .tools .javac .util .*;
12
12
13
+ import javax .lang .model .element .Modifier ;
13
14
import javax .tools .JavaFileObject ;
14
15
import java .util .Iterator ;
15
16
import java .util .stream .Stream ;
@@ -176,6 +177,13 @@ public Void visitClass(ClassTree node, Void aVoid) {
176
177
public void finished (TaskEvent e ) {
177
178
}
178
179
180
+ private Stream <JCTree .JCVariableDecl > getRecordComponents (JCTree .JCClassDecl classDecl ) {
181
+ return classDecl .getMembers ().stream ()
182
+ .filter (JCTree .JCVariableDecl .class ::isInstance )
183
+ .map (JCTree .JCVariableDecl .class ::cast )
184
+ .filter (it -> !it .getModifiers ().getFlags ().contains (Modifier .STATIC ));
185
+ }
186
+
179
187
private List <JCTree .JCStatement > generateToString (JCTree .JCClassDecl classDecl ) {
180
188
JCTree .JCExpression stringBuilder = make .NewClass (
181
189
null ,
@@ -185,11 +193,8 @@ private List<JCTree.JCStatement> generateToString(JCTree.JCClassDecl classDecl)
185
193
null
186
194
);
187
195
188
- Stream <JCTree .JCVariableDecl > fields = classDecl .getMembers ().stream ()
189
- .filter (JCTree .JCVariableDecl .class ::isInstance )
190
- .map (JCTree .JCVariableDecl .class ::cast );
191
196
for (
192
- Iterator <JCTree .JCVariableDecl > iterator = fields .iterator ();
197
+ Iterator <JCTree .JCVariableDecl > iterator = getRecordComponents ( classDecl ) .iterator ();
193
198
iterator .hasNext ();
194
199
) {
195
200
JCTree .JCVariableDecl fieldDecl = iterator .next ();
@@ -274,11 +279,12 @@ private List<JCTree.JCStatement> generateEquals(JCTree.JCClassDecl classDecl, Na
274
279
275
280
// fields
276
281
{
277
- for (JCTree member : classDecl .getMembers ()) {
278
- if (!(member instanceof JCTree .JCVariableDecl )) {
279
- continue ;
280
- }
281
- JCTree .JCVariableDecl fieldDecl = (JCTree .JCVariableDecl ) member ;
282
+ for (
283
+ Iterator <JCTree .JCVariableDecl > iterator = getRecordComponents (classDecl ).iterator ();
284
+ iterator .hasNext ();
285
+ ) {
286
+ JCTree .JCVariableDecl fieldDecl = iterator .next ();
287
+
282
288
JCTree .JCExpression myFieldAccess = make .Select (make .This (Type .noType ), fieldDecl .name );
283
289
JCTree .JCExpression otherFieldAccess = make .Select (
284
290
make .TypeCast (make .Ident (classDecl .name ), make .Ident (otherName )),
@@ -313,11 +319,11 @@ private List<JCTree.JCStatement> generateEquals(JCTree.JCClassDecl classDecl, Na
313
319
private List <JCTree .JCStatement > generateHashCode (JCTree .JCClassDecl classDecl ) {
314
320
ListBuffer <JCTree .JCExpression > expressions = new ListBuffer <>();
315
321
316
- for (JCTree member : classDecl . getMembers ()) {
317
- if (!( member instanceof JCTree .JCVariableDecl )) {
318
- continue ;
319
- }
320
- JCTree .JCVariableDecl fieldDecl = ( JCTree . JCVariableDecl ) member ;
322
+ for (
323
+ Iterator < JCTree .JCVariableDecl > iterator = getRecordComponents ( classDecl ). iterator ();
324
+ iterator . hasNext () ;
325
+ ) {
326
+ JCTree .JCVariableDecl fieldDecl = iterator . next () ;
321
327
322
328
JCTree fType = fieldDecl .getType ();
323
329
0 commit comments