[kotlin] 코틀린에서 제네릭을 사용하여 네트워크(Network)를 다루는 방법은 어떻게 되는가?
가장 많이 쓰이는 방법 중 하나는 Retrofit
라이브러리를 사용하는 것입니다. Retrofit
은 안드로이드와 자바 애플리케이션에서 네트워킹 코드를 작성하는 데 사용되며, 코틀린에서도 쉽게 활용 가능합니다.
우선, build.gradle
파일에 Retrofit
과 함께 사용할 Gson
라이브러리를 추가합니다.
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
}
다음으로, 네트워크 요청과 응답을 처리할 모델 클래스를 만듭니다. 이때, 제네릭을 사용하여 유연한 데이터 모델을 정의할 수 있습니다.
data class ApiResponse<T>(val data: T)
이후, Retrofit
인터페이스를 정의하고 Call
타입을 이용하여 제네릭으로 데이터 모델을 전달합니다.
interface ApiInterface {
@GET("data")
fun getData(): Call<ApiResponse<DataModel>>
}
마지막으로, Retrofit
인스턴스를 생성하고 네트워크 요청을 처리하는 코드를 작성합니다.
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiInterface = retrofit.create(ApiInterface::class.java)
val call: Call<ApiResponse<DataModel>> = apiInterface.getData()
call.enqueue(object : Callback<ApiResponse<DataModel>> {
override fun onResponse(call: Call<ApiResponse<DataModel>>, response: Response<ApiResponse<DataModel>>) {
val data: DataModel? = response.body()?.data
// Handle the data
}
override fun onFailure(call: Call<ApiResponse<DataModel>>, t: Throwable) {
// Handle errors
}
})
이렇게 제네릭을 사용하여 코틀린에서 네트워크를 다룰 수 있습니다. 여기서는 Retrofit
을 사용한 예제를 보여주었지만, 다른 라이브러리를 사용하여도 마찬가지로 제네릭을 활용할 수 있습니다.