2017-08-24 3 views

Répondre

1

... Qu'en est-

FileFilter combinedFilter = f -> wildcardFileFilter.accept(f) && isFileFileFilter.accept(f); 

Si vous voulez parler couramment, rappelez-vous alors qu'un FileFilter est essentiellement un Predicate<File>, qui offre des méthodes pour combiner des choses ...

Predicate<File> wildcardFileFilter = new WildcardFileFilter("*.jml")::accept; 
Predicate<File> isFileFileFilter = FileFileFilter.FILE::accept; 

FileFilter combinedFilter = wildcardFileFilter.and(isFileFileFilter)::test; 
+0

Semble fonctionne mais je pense à une solution plus élégante constructeur fluent ou similaire si elle existe. –

+0

Ajouté un, mais honnêtement, je ne vois pas le point. Vous pouvez bien sûr créer quelque chose comme ça pour FileFilter, mais pour quoi faire? Serait assez facile d'étendre l'interface pour ajouter des méthodes par défaut couramment, par exemple 'MyFileFilter.and (...)', mais je doute qu'il ajoutera beaucoup de clarté. –

+0

Merci, c'est intelligent et m'a beaucoup aidé, j'attends d'autres réponses aussi. –