Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
448 views
in Technique[技术] by (71.8m points)

retrofit2 - is that possible to adapt interface in retrofit android?

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...