I try adapting multiple implementation using interface.
For example see the codes below/
interface or abstract class
interface ChattingJobInterface {
}
data class
@Keep
data class ChattingResponseBody(val chatId: String, val jobs: List<ChattingJobEntity>)
@Keep
data class ChattingJobEntity(val type: String, val data: ChattingJobInterface ?= null)
@Keep
data class ChattingJobWaitEntity(val duration: String): ChattingJobInterface
@Keep
data class ChattingJobEchoEntity(val text: String): ChattingJobInterface
@Keep
data class ChattingJobPlayEntity(val sound: String): ChattingJobInterface
Retrofit Service
@GET("api")
fun getTest(): Call<ChattingResponseEntity>
data from server
var data = {
code: 'test',
body: {
chatId:'chatId',
jobs:[{
type:'duration',
data:{
duration:'duration'
}
},
{
type:'sound',
data:{
sound:'sound'
}
}]
}
}
Using interface, I expect retrofit to reflect the interface.
But it is not working.
When I try that, I got this RuntimeException
Caused by: java.lang.InstantiationException: Can't instantiate
Is there any way to reflect?
question from:
https://stackoverflow.com/questions/65931671/is-that-possible-to-adapt-interface-in-retrofit-android 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…