我将Java代码转换为静态编程语言(Android Studio的自动转换),我得到以下错误:
Java方法如下所示:
/**
* The list of weak reference to the observers.
*/
protected List<WeakReference<ObserverT>> observers = new ArrayList<>();
/**
* Calls the specified action for each observer.
* @param action action to be called.
*/
protected void foreachObserver(@NonNull final INotificationCallback<ObserverT> action) {
final List<ObserverT> tempObserverList = new ArrayList<>();
final List<WeakReference<ObserverT>> listToRemove = new ArrayList<>();
synchronized (this) {
if (!hasChanged()) {
return;
}
clearChanged();
if (observers.isEmpty()) {
return;
}
for (final WeakReference<ObserverT> item : observers) {
if (item.get() == null) {
listToRemove.add(item);
} else {
tempObserverList.add(item.get());
}
}
if (!listToRemove.isEmpty()) {
observers.removeAll(listToRemove);
}
}
notify(tempObserverList, action);
}
静态编程语言中的转换代码:
/**
* The list of weak reference to the observers.
*/
protected var observers: MutableList<WeakReference<ObserverT>> = ArrayList()
/**
* Calls the specified action for each observer.
* @param action action to be called.
*/
protected fun foreachObserver(@NonNull action: INotificationCallback<ObserverT>) {
val tempObserverList: MutableList<ObserverT> = ArrayList()
val listToRemove: MutableList<WeakReference<ObserverT>> = ArrayList()
synchronized(this) {
if (!hasChanged()) {
return
}
clearChanged()
if (observers.isEmpty()) {
return
}
for (item in observers) {
if (item.get() == null) {
listToRemove.add(item)
} else {
tempObserverList.add(item.get()) // This line throws an error
}
}
if (listToRemove.isNotEmpty()) {
observers.removeAll(listToRemove)
}
}
notify(tempObserverList, action)
}
我没有找到解决方案,因为我没有正确理解它。任何指导将不胜感激。
感谢您抽出宝贵时间接受采访
因为< code>item.get()在您检查它和将其添加到列表之间不一定保持不变,所以您应该将它存储在一个变量中。
val x = item.get()
if (x == null) {
listToRemove.add(item)
} else {
tempObserverList.add(x) // No more error
}
我有这个代码: 其中是类型的参数 < code>var mMeshes: MutableList 编译器在最后一行抱怨,我试图在那里声明 智能投射到
我的困难是 如何修复函数SortByTotal中的任何错误? 1.1错误:(32,51)Kotlin:无法智能强制转换为“OrderProcessing.OrderNode”,因为“Run.Next”是一个复杂的表达式 我明白有很多错误,回答其中的任何一个部分或者给我一些暗示已经很感激了。谢谢你的好意。 我的代码如下: 涉及的类:
主要活动如下: 当单击fab按钮时,我尝试在数据模型中增加计数器 但是我在第< code > mview model . counter . value 行得到一个错误 智能转换为“整数”是不可能的,因为“mView模型.计数器.值”是一个复杂的表达式 错误是什么意思? 这里是数据模型 编辑 如果我注释掉空检查 我收到错误 在Int类型的可空接收器上只允许安全(?)或非空断言(!!)调用? 编辑
我在JavaFX中看到的一切似乎都是面向属性的,但在这里似乎不是正确的选择。
问题内容: 我想这样做: 但表达式的计算结果始终为。 我不想在上定义特殊功能。 问题答案: 如果需要运行任意JavaScript代码,请使用控制器方法,或者可以定义返回true或false的过滤器。 我刚刚进行了测试(应该首先进行了测试),并且像预期的那样工作。
我从这里得到上面的错误消息: 特别是从第二行。。进口是 akka版本是2.2.1,scala是2.10.2,我正在使用sbt 0.13来构建它。 编辑:我用 结果如下: