Kotlin - «запустить» для статических методов Java - PullRequest
5 голосов
/ 25 марта 2019

У меня есть следующий код:

import javax.swing.*
...
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName())
UIManager.put("ToolTip.border", BorderFactory.createEmptyBorder())
UIManager.put("PopupMenu.border", BorderFactory.createEmptyBorder())
...

Я хочу избавиться от всех UIManager. квалификаторов, например:

UIManager.run {
    setLookAndFeel(getCrossPlatformLookAndFeelClassName())
    put("ToolTip.border", BorderFactory.createEmptyBorder())
    put("PopupMenu.border", BorderFactory.createEmptyBorder())
    ...
}

Конечно, этот код не компилируется. Можно ли достичь?

1 Ответ

0 голосов
/ 25 марта 2019

Вы можете использовать ' с ключевым словом ' для достижения этой цели. Это одна из функций определения объема в Котлине.

with(UIManager)
{
    setLookAndFeel(getCrossPlatformLookAndFeelClassName())
    put("ToolTip.border", BorderFactory.createEmptyBorder())
    put("PopupMenu.border", BorderFactory.createEmptyBorder())
    ...
}

В конечном итоге вы ожидаете какую-то функцию определения объема. В этой статье дается подробное объяснение варианта использования каждой функции определения объема в Kotlin. https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84

...