It could be flattened by iterative approach.
static class ArrayHolder implements Iterator
You can find the full source here
You can use recursion to solve this problem.
private void flat(Object[] elements, List flattened) {
for (Object element : elements)
{
if (Objects.nonNull(element) && element.getClass().isArray())
{
flat((Object[])element, flattened);
}
else
{
flattened.add(element);
}
}
}
Here is the link for recursion.