我正在使用Kotlin制作Swing外观。为了创建UI,Swing需要具有createUI带有以下签名的静态方法:
class ButtonUI: BasicButtonUI() {
...
companion object {
@JvmStatic fun createUI(p0: JComponent): ComponentUI {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在Swing代码中通过反射调用它:
m = uiClass.getMethod("createUI", new Class[]{JComponent.class});
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于以下原因,上面的代码无法由kotlin编译器编译:
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!
Run Code Online (Sandbox Code Playgroud)
有这种情况的解决方法吗?
我有html:
<select ng-model="main.selectedReport" ng-change="main.selectReport()">
<option value="">Not selected</option>
<option ng-repeat="rep in main.reports" value="{{rep.value1}}">{{rep.value2}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我的控制器是:
@NgController(selector: '[main-controller]', publishAs: 'main')
class MainController extends FCViewAbstractController {
Map reports;
Long selectedReport;
....
selectReport() {
print(selectedReport);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么我在selectReport()中获得先前选择的值?例如:在第一次选择时,我得到了空值.
但是angularjs中的版本可以正常工作http://plnkr.co/edit/ILBBWfkRp9tegQZaGZ9u?p=preview