В Kotlin ввели очень полезный элемент with. Грубо говоря, это замена call chaining’у для тех Java API, которые его не поддерживают.
Вместо:
stmt.setInteger(++i, 1); stmt.setString(++i, "Hello"); stmt.setString(++i, "World"); stmt.execute();
Можно писать:
with (stmt) { setInteger(++i, 1) setString(++i, "Hello") setString(++i, "World) }
Работает так же и с методами, но тут уже нужно быть очень осторожным.
К примеру в Vert.x вызов router.route() каждый раз создает новый Route.
Так что
with (router.route()) { handler(CorsHandler.create()) handler(StaticHandler.create()) }
Приведет к тому, что на одно Route’е повиснут два Handler’а.
К счастью, Vert.x достаточно умен, чтобы об этом предупредить. Но от более старых фреймворков такой предусмотрительности ждать не стоит.