jvm 类型为Kotlin的变量变为java.util.Arraylist并导致错误

jaql4c8m  于 2023-01-17  发布在  Kotlin
关注(0)|答案(1)|浏览(151)

我尝试使用www.example.com API创建一个应用程序walt.id,在该应用程序中,我收到一个错误,指出变量的类型应为kotlin.collections.List<kotlin.String>,但实际上却是java.util.ArrayList,尽管变量的类型正确:

@Json(name = "@context") 
var context: List<String>? = listOf("https://www.w3.org/2018/credentials/v1"),

我想知道这是Kotlin问题还是Walt.idAPI问题,因为它的实现不可用。变量是模型的一部分,传递给转换对象的方法:

package model

import com.beust.klaxon.Json
import id.walt.vclib.model.*
import id.walt.vclib.registry.VerifiableCredentialMetadata
import java.time.LocalDate

data class EHIC(
    @Json(name = "@context") 
    var context: List<String>? = listOf("https://www.w3.org/2018/credentials/v1"),
...

当我试图调用转换EHIC对象实现的方法时,我得到了以下错误:

Exception in thread "main" com.beust.klaxon.KlaxonException: Unable to instantiate VerifiableAttestation:
    Parameter context: expected kotlin.collections.List<kotlin.String> but received java.util.ArrayList (value: [https://www.w3.org/2018/credentials/v1])
No argument provided for a required parameter: parameter #1 id of fun `<init>`(kotlin.collections.List<kotlin.String>, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, id.walt.vclib.credentials.VerifiableAttestation.VerifiableAttestationSubject?, id.walt.vclib.model.CredentialStatus?, id.walt.vclib.model.CredentialSchema?, kotlin.collections.List<id.walt.vclib.credentials.VerifiableAttestation.Evidence>?, id.walt.vclib.model.Proof?): id.walt.vclib.credentials.VerifiableAttestation
No argument provided for a required parameter: parameter #1 id of fun `<init>`(kotlin.collections.List<kotlin.String>, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, id.walt.vclib.credentials.VerifiableAttestation.VerifiableAttestationSubject?, id.walt.vclib.model.CredentialStatus?, id.walt.vclib.model.CredentialSchema?, kotlin.collections.List<id.walt.vclib.credentials.VerifiableAttestation.Evidence>?, id.walt.vclib.model.Proof?): id.walt.vclib.credentials.VerifiableAttestation
No argument provided for a required parameter: parameter #1 id of fun `<init>`(kotlin.collections.List<kotlin.String>, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.String?, id.walt.vclib.credentials.VerifiableAttestation.VerifiableAttestationSubject?, id.walt.vclib.model.CredentialStatus?, id.walt.vclib.model.CredentialSchema?, kotlin.collections.List<id.walt.vclib.credentials.VerifiableAttestation.Evidence>?, id.walt.vclib.model.Proof?): id.walt.vclib.credentials.VerifiableAttestation

    at com.beust.klaxon.JsonObjectConverter.initIntoUserClass(JsonObjectConverter.kt:115)
    at com.beust.klaxon.JsonObjectConverter.fromJson(JsonObjectConverter.kt:30)
    at com.beust.klaxon.DefaultConverter.fromJsonObject(DefaultConverter.kt:223)
    at com.beust.klaxon.DefaultConverter.fromJson(DefaultConverter.kt:40)
    at com.beust.klaxon.Klaxon.fromJsonObject(Klaxon.kt:296)
    at id.walt.vclib.model.VerifiableCredential$Companion.fromString(VerifiableCredential.kt:219)
    at id.walt.vclib.model.VerifiableCredentialKt.toCredential(VerifiableCredential.kt:198)
    at ebsi.IssuerKt.issueCredentials(Issuer.kt:138)
    at ebsi.IssuerKt.credentials(Issuer.kt:34)
    at ebsi.IssuerKt.main(Issuer.kt:25)
    at ebsi.IssuerKt.main(Issuer.kt)

Process finished with exit code 1

我还尝试将变量写为:

@Json(name = "@context") var context: kotlin.collections.List<kotlin.String> = listOf("https://www.w3.org/2018/credentials/v1"),

但它仍然会抛出同样的错误。
我为我糟糕的英语和含糊不清道歉,我非常疲惫,需要睡眠。帮助是非常感激的,谢谢。
其他一些照片可能会有所帮助:

qlvxas9a

qlvxas9a1#

我觉得你应该反其道而行之,

@Json(name = "@context") 
var context: ArrayList<String>? = arrayListOf("https://www.w3.org/2018/credentials/v1")

相关问题