Generics kotlin,如何返回泛型类型成员变量
返回泛型类型的成员变量时出错(在Android上,不确定是否有任何区别) 任何建议都将不胜感激 试图返回传入的T,但仍会出现相同的错误:Generics kotlin,如何返回泛型类型成员变量,generics,kotlin,Generics,Kotlin,返回泛型类型的成员变量时出错(在Android上,不确定是否有任何区别) 任何建议都将不胜感激 试图返回传入的T,但仍会出现相同的错误: class RemoteData<T>(response: Response<ResponseBody>, pojoClassType: Class<T>, testData: T) : IRemoteData { ...... private var mData: T? = testData ......
class RemoteData<T>(response: Response<ResponseBody>, pojoClassType: Class<T>, testData: T) : IRemoteData {
......
private var mData: T? = testData
......
override fun <T> getJsonPOJO(): T? {
return mData //<=== same compiler error
}
}
class RemoteData(响应:响应,pojoClassType:class,testData:T):IRemoteData{
......
私有变量mData:T?=testData
......
重写fun getJsonPOJO():T{
return mData/以下是您要查找的内容:
interface IRemoteData<T> {
fun isSuccess() : Boolean
fun getJsonPOJO() : T?
fun getCode() : Int
fun getMessage() : String
}
class RemoteData<T>(response: Response<ResponseBody>, pojoClassType: Class<T>) : IRemoteData<T> {
private var mData: T? = null
override fun getJsonPOJO(): T? {
return mData
}
}
就这样!以下是您想要的:
interface IRemoteData<T> {
fun isSuccess() : Boolean
fun getJsonPOJO() : T?
fun getCode() : Int
fun getMessage() : String
}
class RemoteData<T>(response: Response<ResponseBody>, pojoClassType: Class<T>) : IRemoteData<T> {
private var mData: T? = null
override fun getJsonPOJO(): T? {
return mData
}
}
就是这样!您希望创建一个具有一个类型参数的类,该类使用一个类型参数扩展接口。首先,将泛型类型添加到接口签名中
interface IRemoteData<T>
但是,您需要的是将提供给RemoteData的泛型类型直接传递给IRemoteData
class RemoteData<E> : IRemoteData<E>
您希望创建一个具有一个类型参数的类,该类使用一个类型参数扩展接口。首先,将泛型类型添加到接口签名中
interface IRemoteData<T>
但是,您需要的是将提供给RemoteData的泛型类型直接传递给IRemoteData
class RemoteData<E> : IRemoteData<E>
从类RemoteData(错误:unrevled T)或fun getJsonPOJO()中删除前导的
。(相同的旧错误),它仍然存在编译器错误。类中的声明与方法中的声明不同。例如,class!=方法As@nicholas.hauschild说,您需要将T
绑定到接口和类声明:interface IRemoteData{…}
然后class RemoteData…:IRemoteData{…}
@nicholas.hauschild,你能解释一下为什么相同的T不相同吗?它传入了“testData:T”并返回“testData”仍然会出错。谢谢!删除前导
。从类RemoteData中删除前导后(错误:unseovled T)或fun getJsonPOJO()(相同的旧错误),它仍然存在编译器错误。类中的声明与方法中的声明不同。例如,class!=方法As@nicholas.hauschild说,您需要将T
绑定到接口和类声明:interface IRemoteData{…}
然后class RemoteData…:IRemoteData{…}
@nicholas.hauschild,你能解释一下为什么相同的T不相同吗?它传入了“testData:T”并返回“testData”仍然会出错。谢谢!谢谢大家,需要删除getJsonPOJO()的前导。现在另一个错误:val remoteData=remoteData(response,POJOClazz::class.java)onRemoteDataReady(remoteData)//很高兴听到这个消息,解决了您的问题。但是我不确定我是否理解您的第二个问题。您是否有更多的代码要共享,可能是一个粘贴库?因为从这里,我不知道您在哪里定义了onRemoteDataReady()
也不知道在何处/如何调用它谢谢你们,需要从getJsonPOJO()中删除前导。现在另一个错误:val remoteData=remoteData(response,POJOClazz::class.java)onRemoteDataReady(remoteData)//很高兴听到这个消息解决了您的问题。但是我不确定我是否理解您的第二个问题。您是否有更多的代码要共享,可能是一个pastebin?因为从这里,我不知道您在哪里定义了onRemoteDataReady()
,也不知道您在哪里/如何调用它
class RemoteData : IRemoteData<Int>
class RemoteData<E> : IRemoteData<E>
interface IRemoteData<T> {
fun getJsonPojo(): T
}
class RemoteData<E> : IRemoteData<E> {
override fun getJsonPojo(): E {
// return something type E
}
}
// elsewhere
val data = RemoteData<Int>()
val x: Int = data.getJsonPojo()