Java 8 Comparator类型推论非常困惑
我一直在研究Collections.sort和之间的区别list.sort,特别是在使用Comparator静态方法以及lambda表达式中是否需要参数类型方面。在开始之前,我知道我可以使用方法引用Song::getTitle来解决问题,例如,这里的查询不是我想要修复的东西,而是我想要解决的东西,即Java编译器为什么以这种方式处理它。 这些是我的发现。假设我们有一个ArrayListtype Song,添加了一些歌曲,有3种标准的get方法: ArrayList<Song> playlist1 = new ArrayList<Song>(); //add some new Song objects playlist.addSong( new Song("Only Girl (In The World)", 235, "Rhianna") ); playlist.addSong( new Song("Thinking of Me", 206, "Olly Murs") ); playlist.addSong( new Song("Raise Your Glass", 202,"P!nk") ); 这是对两种有效的排序方法的调用,没问题: Collections.sort(playlist1, Comparator.comparing(p1 -> p1.getTitle())); playlist1.sort( Comparator.comparing(p1 -> p1.getTitle())); 一旦开始链接thenComparing,就会发生以下情况: Collections.sort(playlist1, …