0
votes

Comment satisfaire les exigences génériques imbriquées de la classe à Kotlin

J'essaie d'appeler une méthode où elle signifie que la signature comprend un paramètre de Classe code>

ci-dessous est le code d'échantillon dans KOTLIN P>

ResponseObject<User::class.java>::class.java


3 commentaires

Cet usage me semble correct si votre objet de réponse est le type d'utilisateur: "Responsible >"


BTW Vous n'êtes pas obligé de spécifier le type du tout Val Réponse = TestRestTemplate.postforentity ("/ Utilisateurs", User, ResponsibleObject :: Class.java)


Quelle est la signature de la méthode testtresttempate.postforentiment


3 Réponses :


0
votes

OK J'ai réussi à résoudre mon problème à l'aide de la coulée de type utilisant quand xxx


0 commentaires

0
votes

Si vous pouvez modifier la signature de la méthode, vous pouvez essayer quelque chose de similaire à celui suivant:

class ResponseEntity<T : Any>(val body: T)

class ResponseObject<T : Any>(val model: T)

data class User(val id: Long, val status: String)

fun <M : Any, K : ResponseObject<M>> postForEntity(paht: String, model: M): ResponseEntity<K> {
    return TODO()
}

val response: ResponseEntity<ResponseObject<User>> = postForEntity("/users", User(1, "good"))


0 commentaires

0
votes

Vous pouvez utiliser

inline fun <reified T> classOf<T>() = T::class.java

val response = testRestTemplate.postForEntity("/users", user, classOf<ResponseObject<User>>())


2 commentaires

merci, mais je reçois java.lang.classcastException: java.util.linkedhashmap ne peut pas être coulé sur modèle.User


Ensuite, cela dépend de la bibliothèque que vous utilisez, désolé.