У меня есть список bean-компонентов, автоматически подключаемых интерфейсом в моем приложении с Kotlin и Spring-boot.
@Autowired
private var pages: List<Paging>
В пост-конструкции я сортирую bean-компоненты по простому имени класса
@PostConstruct
fun setUp(){
pages.sortedBy { it.javaClass.simpleName }
pages.forEach { log.info("{}", it::class.simpleName) }
}
Я вижу следующие результаты
page.month.Page19M@69cf9dd
page.month.Page04@43be5d62
page.month.Page03@5d34e3b3
page.month.Page13@151b7c03
page.month.Page16@6e71c9dc
page.month.Page17@7fe14f94
page.month.Page12@1f502e65
page.month.Page18@7d4d32a7
page.month.Page07@65c29c4c
page.month.Page06@5387e079
page.month.Page15@249dd7e6
page.month.Page11@56f13088
page.month.Page14@29ef49a1
page.month.Page10@76dc4e
page.month.Page09@c59b505
page.month.Page01@30c6e2e
page.month.Page02w@46bde78e
page.month.Page05@7500f8f0
page.month.Page08@7c5810e4
Бобы не сортируются по простому имени.
Но когда я использую стиль потока
pages.stream()
.sorted { o1, o2 -> o1.javaClass.simpleName.compareTo(o2.javaClass.simpleName) }
.forEach { i -> log.info("{}", i.javaClass.simpleName) }
Я вижу отсортированные результаты
page.month.Page01@30c6e2e
page.month.Page02w@46bde78e
page.month.Page03@5d34e3b3
page.month.Page04@43be5d62
page.month.Page05@7500f8f0
page.month.Page06@5387e079
page.month.Page07@65c29c4c
page.month.Page08@7c5810e4
page.month.Page09@c59b505
page.month.Page10@76dc4e
page.month.Page11@56f13088
page.month.Page12@1f502e65
page.month.Page13@151b7c03
page.month.Page14@29ef49a1
page.month.Page15@249dd7e6
page.month.Page16@6e71c9dc
page.month.Page17@7fe14f94
page.month.Page18@7d4d32a7
page.month.Page19M@69cf9dd
Я не понимаю, почему результаты отличаются. Я пытался использовать только класс с полем - работает нормально.
Что мне не хватает?