java - 为什么 kotlin 在 foreach 中创建两个对象时抛出“验证程序拒绝类”错误?
问题描述
我遇到了一个非常奇怪的行为。我有一个 Any 类型的列表,我使用 forEach 在其中进行迭代。问题是我正在使用对列表中当前对象的引用在内部创建两个对象,它只是崩溃了。
projectLogEntries.forEach{
if (it is ProjectQuery.ProjectLogEntry){
val projectLogEntry = ProjectLogEntry(
createdAt = Date(),
remoteId = it.id()?.toLong(),
remoteUserId = it.device()?.user()?.id()?.toLong(),
projectId = it.project()?.id()?.toLong()!!,
comment = "asdf"
)
val user = User(
createdAt = Date(),
nameUser = it.device()?.user()?.name(),
remoteId = it.device()?.user()?.id()?.toLong(),
email = it.device()?.user()?.email() ?: "No email",
lastName = it.device()?.user()?.lastName() ?: "No last name"
)
}
我得到这个错误。
java.lang.VerifyError: Verifier rejected class com.rhodar.mobile.codescrum.rhodarsitepacks.data.respositories.ProjectRepository: void com.rhodar.mobile.codescrum.rhodarsitepacks.data.respositories.ProjectRepository.saveProjectLogEntriesTest(java.util.List) failed to verify: void com.rhodar.mobile.codescrum.rhodarsitepacks.data.respositories.ProjectRepository.saveProjectLogEntriesTest(java.util.List): [0x128] copy2 v24<-v6 type=Precise Low-half Constant: 0/Zero/null (declaration of 'com.rhodar.mobile.codescrum.rhodarsitepacks.data.respositories.ProjectRepository' appears in /data/app/com.rhodar.mobile.codescrum.rhodarsitepacks.development-g3RDRVMlGdFpZFzB8fi1lQ==/split_lib_slice_1_apk.apk)
at com.rhodar.mobile.codescrum.rhodarsitepacks.ui.MainProjectActivity.<init>(MainProjectActivity.kt:29)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1173)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
知道为什么会这样吗?
解决方案
推荐阅读
- r - 在dplyr中按位置和数值拆分字符串
- twig - 使用 if 条件循环循环
- flutter - Flutter Web:image_picker 插件从文件夹而不是网络摄像头获取图像
- java - 如何在 JavaFX 中制作渐变进度条?
- cuda - cudaMemcpy 将 rgb 问题转换为灰度
- git - git 如何更改我所做的一切的默认分支?
- objective-c - 将鼠标悬停在 NSMenu/NSMenuItem 上时填充子菜单?
- android - 最有效的 ViewModel 策略是什么?
- haskell - 无法在 do 块中重构代码,IO 返回类型不匹配
- html - 从右到左无限滚动css,React