66import java .lang .reflect .Field ;
77import java .lang .reflect .InvocationTargetException ;
88import java .lang .reflect .Method ;
9+ import java .lang .reflect .Modifier ;
910import java .util .ArrayList ;
1011import java .util .List ;
1112import java .util .stream .Collectors ;
13+ import java .util .stream .Stream ;
1214import java .util .stream .StreamSupport ;
1315import nl .jqno .equalsverifier .internal .reflection .ClassAccessor ;
1416import nl .jqno .equalsverifier .internal .reflection .FieldAccessor ;
@@ -72,12 +74,15 @@ private void verifyRecordPrecondition(
7274 failedFields .stream ().collect (Collectors .joining ("," ))));
7375 }
7476
77+ private static <T > Stream <Field > instanceFieldFor (Class <T > type ) {
78+ return StreamSupport .stream (FieldIterable .of (type ).spliterator (), false )
79+ .filter (field -> !Modifier .isStatic (field .getModifiers ()));
80+ }
81+
7582 private static <T > Constructor <T > getConstructorFor (Class <T > type ) {
7683 try {
7784 List <Class <?>> constructorTypes =
78- StreamSupport .stream (FieldIterable .of (type ).spliterator (), false )
79- .map (Field ::getType )
80- .collect (Collectors .toList ());
85+ instanceFieldFor (type ).map (Field ::getType ).collect (Collectors .toList ());
8186 Constructor <T > constructor =
8287 type .getConstructor (constructorTypes .toArray (new Class <?>[0 ]));
8388 constructor .setAccessible (true );
@@ -91,7 +96,7 @@ private static <T> Constructor<T> getConstructorFor(Class<T> type) {
9196 private T callConstructor (
9297 Class <T > type , Constructor <T > constructor , ObjectAccessor <T > accessor ) {
9398 List <?> params =
94- StreamSupport . stream ( FieldIterable . of ( type ). spliterator (), false )
99+ instanceFieldFor ( type )
95100 .map (accessor ::fieldAccessorFor )
96101 .map (FieldAccessor ::get )
97102 .collect (Collectors .toList ());
0 commit comments