Description
I suggest converting the AndFileFilter(IOFileFilter filter1, IOFileFilter filter2) and OrFileFilter(IOFileFilter filter1, IOFileFilter filter2) constructors to use varargs and instead have the signatures AndFileFilter(IOFileFilter... filters) and OrFileFilter(IOFileFilter... filters). The benefit is that new And/OrFileFilters could be created without having to create a list or limit the initial number of filters to two.
Ex:
IOFileFilter hiddenNonEmptyTextFileFilter = new AndFileFilter(HiddenFileFilter.HIDDEN, EmptyFileFilter.NOT_EMPTY, new SuffixFileFilter(".txt"));
If backwards compatibility is an issue, then the varargs constructors could be added alongside the two argument constructors.