Having an extremely long Java statement with many chained method calls can cause compilation to fail with a StackOverflowError
when the compiler tries to recursively process it.
This is a common problem in generated code.
As an alternative to extremely long chained method calls, e.g. for builders, consider something like the following for collections with hundreds or thousands of entries:
private static final ImmutableList<String> FEATURES = createFeatures(); private static final ImmutableList<String> createFeatures() { ImmutableList.Builder<String> builder = ImmutableList.<String>builder(); builder.add("foo"); builder.add("bar"); ... return builder.build(); }
over code like this:
private static final ImmutableList<String> FEATURES = ImmutableList.<String>builder() .add("foo") .add("bar") ... .build();