[英]How to make a function that returns a generic object?
我正在嘗試制作一個返回 T/Any object 的 function。 唯一的問題是我不太確定該怎么做。
fun readMockData(context: Context, filename: String): Any {
val json = context.assets.open("$filename.json").bufferedReader().use(BufferedReader::readText)
return RetrofitSingleton.GSON.fromJson(json, object : TypeToken<Any>() {}.type)
}
這是我最初嘗試的方法,但出現錯誤。 我應該如何正確制作這個 function?
如果我正確理解您的問題,這就是您所需要的:
@OptIn(ExperimentalStdlibApi::class)
inline fun <reified T> readMockData(context: Context, filename: String): T {
val json = context.assets.open("$filename.json").bufferedReader().use(BufferedReader::readText)
return RetrofitSingleton.GSON.fromJson(json, typeOf<T>().javaType)
}
請注意,它必須是內聯的,否則無法獲取類型。 如果您的 function 比上面的長,最好將其拆分為內聯 reified 包裝器和接受Type
作為參數的主要 function 。
它使用反射,因此您需要為其添加依賴項。 此外, typeOf()
是實驗性的,但根據我的經驗,它可以正常工作(至少在 JVM 上)並且它已經存在了很長時間,所以我猜它不會改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.