- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 kotlin 开发 Swing 外观。为了创建 UI,Swing 需要有一个静态方法 createUI
带有以下签名:
class ButtonUI: BasicButtonUI() {
...
companion object {
@JvmStatic fun createUI(p0: JComponent): ComponentUI {
...
}
}
}
m = uiClass.getMethod("createUI", new Class[]{JComponent.class});
Error:(88, 9) Kotlin: Accidental override: The following declarations have the same JVM signature (createUI(Ljavax/swing/JComponent;)Ljavax/swing/plaf/ComponentUI;):
fun createUI(c: JComponent): ComponentUI
fun createUI(p0: JComponent!): ComponentUI!
最佳答案
这是一个 kotlin bug KT-12993 .不幸的是,该错误尚未修复。只使用 java实现你的ButtonUI
或在 java 之间切换如果您想让 kotlin 实现您的 ui 逻辑,则使用 kotlin 来解决问题。例如,您应该定义一个 同行 java之间和 Kotlin 。
java代码如下:
public class ButtonUI extends BasicButtonUI {
private ButtonUIPeer peer;
public ButtonUI(ButtonUIPeer peer) {
this.peer = peer;
}
@Override
public void installUI(JComponent c) {
peer.installUI(c, () -> super.installUI(c));
}
// override other methods ...
public static ComponentUI createUI(JComponent c) {
// create the peer which write by kotlin
// |
return new ButtonUI(new YourButtonUIPeer());
}
}
interface ButtonUIPeer {
void installUI(Component c, Runnable parentCall);
//adding other methods for the ButtonUI
}
class YourButtonUIPeer : ButtonUIPeer {
override fun installUI(c: Component, parentCall: Runnable) {
// todo: implements your own ui logic
}
}
ButtonUI
它在 kotlin 中实现(许多 IDE 支持为字段生成委托(delegate)方法)。例如:
public class ButtonUIProxy extends BasicButtonUI {
private final BasicButtonUI target;
//1. move the cursor to here ---^
//2. press `ALT+INSERT`
//3. choose `Delegate Methods`
//4. select all public methods and then click `OK`
public ButtonUIProxy(BasicButtonUI target) {
this.target = target;
}
public static ComponentUI createUI(JComponent c){
// class created by kotlin ---v
return new ButtonUIProxy(new ButtonUI());
}
}
关于swing - Kotlin @JvmStatic 和伴随对象中的意外覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607112/
我正在使用 kotlin 开发 Swing 外观。为了创建 UI,Swing 需要有一个静态方法 createUI带有以下签名: class ButtonUI: BasicButtonUI() {
如何将main声明为静态,以便该方法将按以下方式运行(交互式): thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ kotlinc Welcome to Kotlin
我会假设一个用 @JvmStatic 注释的方法将无法访问,更不用说修改,类属性。 基于以下情况,情况并非如此。此代码清楚地更新状态,打印 From main - 11 . object Foo {
我试图了解使用/不使用@JvmStatic 之间的区别,以及何时应该使用其中任何一个。 所以,使用 Kotlin 和 Java,我可以做到这一点: TestKotlin.kt class TestKo
这个问题已经有答案了: Android Studio 3.0 Canary 1: Kotlin tests or Java tests referring to Kotlin classes fail
标准的 Kotlin 生成这样的东西 @JvmStatic fun newInstance(param1: String, param2: String) =
我正在将部分应用程序从 Java 迁移到 Kotlin,对此有疑问。 什么是更好的或更好的方法? 包含注解@file:JvmName 和函数的文件 @file:JvmName("ClassX") fu
我刚刚开始使用 Kotlin 编程语言,它比 Java 要酷得多。我对静态方法和字段有一些疑问: Q1:官方文档说 Kotlin can also generate static methods fo
我想知道这是否可以使用编译器参数或插件来完成。我有现有的 java 模块,已转换为 kotlin,但它有一堆静态方法/字段。在某些时候,我想重构它,但现在这个库的(java)使用者无法工作,除非我手动
首先,请注意我不期待 why do you want to obfuscate library评论。这是我要问的一个真正的问题。 我在使用 Kotlin 编写的 Android 库处理 R8/混淆时遇
我是一名优秀的程序员,十分优秀!