【发布时间】:2019-08-23 17:17:15
【问题描述】:
/** 这个“T::class.java”报错:Cannot use 'T' as reified type parameter。改用类! 那么我该如何解决它或者我能做些什么来实现这种方式?请。 **/ 看下一段kotlin代码
data class PostHttpResultBean<T>(private var errno:Int,private var error:String,private var data:String):IHttpResultEntity<T>{
override val errorCode: Int
get() = errno
override val errorMessage: String
get() = error
override val isSuccess: Boolean
get() = errno==0
override val result:T
get() = RSAUtil.dataDecrypt(RSAUtil.getKeyPassword(), data,T::class.java)!!
class RSAUtil {
companion object {
fun <T> dataDecrypt(password: String, data: String, java: Class<T>): T? {
val content = Base64.decode(data.toByteArray(), Base64.NO_WRAP)
try {
var deString = decrypt(content, password)
if (!deString.isEmpty()){
val first = deString.substring(0, deString.lastIndexOf(":") + 1)
deString = "$first$deString}"
return Gson().fromJson(deString,java)
}
return null
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
}
}
【问题讨论】:
-
可能你需要使用
reified @PureReifiable。看这里stackoverflow.com/a/46870546/6055194