フィールドを持つ非常に単純な Java BeanWatchedFile
がありfileName
ます。
fj.data.List
オブジェクトの をソートしたいのですが、リストのメソッドのWatchedFile
を定義するのに苦労しています。これは私が思いついたものです:fj.Ord
sort()
protected List<WatchedFile> getWatchedFileList(String path) throws IOException {
List<File> files = List.list(new File(path).listFiles());
return files
.map((file) -> new WatchedFile(file.getName(), false, file.length()))
.sort(Ord.ord(new F<WatchedFile, F<WatchedFile, Ordering>>()
{
@Override
public F<WatchedFile, Ordering> f(final WatchedFile watchedFile1)
{
return new F<WatchedFile, Ordering>()
{
@Override
public Ordering f(final WatchedFile watchedFile2)
{
int compareResult = watchedFile1.fileName.compareTo(watchedFile2.fileName);
return (compareResult < 0 ? Ordering.LT :
(compareResult > 0 ? Ordering.GT : Ordering.EQ));
}
};
}
}));
}
これは醜いです!オブジェクトをインスタンス化するより良い方法があると確信していOrd
ます...おそらくJava 8の魔法を利用していますか?