replace Collection<FieldAccess> by FieldAccess[] array (saves iterator instance)

This commit is contained in:
Roland Praml authored and Roel Spilker committed 2018-08-20 20:46:31 +02:00
1 parent 8151e710fc
commit d2ec0e7bdd
1 file changed
+6 -6
+6 -6
View File
@@ -216,19 +216,19 @@ public abstract class AST<A extends AST<A, L, N>, L extends LombokNode<A, L, N>,
}
}
private static final ConcurrentMap<Class<?>, Collection<FieldAccess>> fieldsOfASTClasses = new ConcurrentHashMap<Class<?>, Collection<FieldAccess>>();
private static final ConcurrentMap<Class<?>, FieldAccess[]> fieldsOfASTClasses = new ConcurrentHashMap<Class<?>, FieldAccess[]>();
/** Returns FieldAccess objects for the stated class. Each field that contains objects of the kind returned by
* {@link #getStatementTypes()}, either directly or inside of an array or java.util.collection (or array-of-arrays,
* or collection-of-collections, et cetera), is returned.
*/
protected Collection<FieldAccess> fieldsOf(Class<?> c) {
Collection<FieldAccess> fields = fieldsOfASTClasses.get(c);
protected FieldAccess[] fieldsOf(Class<?> c) {
FieldAccess[] fields = fieldsOfASTClasses.get(c);
if (fields != null) return fields;
fields = new ArrayList<FieldAccess>();
getFields(c, fields);
fieldsOfASTClasses.putIfAbsent(c, fields);
List<FieldAccess> fieldList = new ArrayList<FieldAccess>();
getFields(c, fieldList);
fieldsOfASTClasses.putIfAbsent(c, fieldList.toArray(new FieldAccess[fieldList.size()]));
return fieldsOfASTClasses.get(c);
}