动机
在Java中,我们习惯于类名“Utils”:FileUtils、StringUtils等等。著名的java.util.Collections属于同种类型。一种关于这种Utils类的不太友好的部分就是使用它们的代码一般按照如下所示:
// Java中
Collections.swap(list, Collections.binarySearch(list, Collections.max(otherList)), Collections.max(list))
更进一步,我们可以使用静态导入的方式将代码书写成以下:
// Java
swap(list, binarySearch(list, max(otherList)), max(list))
这种方式较好一些,但是我们不能在IDE的代码自动完成功能中获得帮助。如果变成以下的方式将更佳:
// Java
list.swap(list.binarySearch(otherList.max()), list.max())
但我们又不想在 List 类中实现所有可能的方法,所以这就是扩展带来的好处。