我有以下代码:

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())
    ...
}

当然,这段代码不能编译。有可能实现吗?

最佳答案

您可以使用 关键字来实现这一点。这是 Kotlin 中的作用域函数之一。

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

关于Kotlin - "run"用于静态 Java 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55328553/

10-16 09:27