博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin使用泛型搭建一个MVP最简单实例
阅读量:6660 次
发布时间:2019-06-25

本文共 1357 字,大约阅读时间需要 4 分钟。

一、Kot对泛型能有很好的支持,下面的例子,是基于泛型搭建的一个Mvp,感兴趣的话,可以自己debug调试一下。

import com.sun.xml.internal.rngom.parse.host.Baseimport java.lang.reflect.ParameterizedType/** * @author:wangdong * @description:泛型实现一个mvp的框架 *//** * 视图接口 * 协变out */interface Iview
>>{ val presenter: P}/** * 主持人 */interface IPresenter
>>{ val view: V}/** * 定义两个实现类,各自实现两个接口 */abstract class BaseView
>>:Iview

{ override val presenter: P //初始化presenter init { presenter = findPresenterClass().newInstance() presenter.view = this } private fun findPresenterClass():Class

{ var thisClass: Class<*> = this.javaClass while (true){ (thisClass.genericSuperclass as? ParameterizedType)?.actualTypeArguments?.firstOrNull() ?.let { return it as Class

} ?: run{ thisClass = thisClass.superclass ?: throw IllegalArgumentException() } } }}abstract class BasePresenter

>>:IPresenter
{ override lateinit var view: @UnsafeVariance V}class MainView: BaseView
()class MainPresenter: BasePresenter
()fun main(args: Array
) { MainView().presenter.let(::println)}

最后的输出结果

MainPresenter@7a81197d

好啦,结束啦

转载地址:http://bmxto.baihongyu.com/

你可能感兴趣的文章
Eclipse在Debug模式下经常进入ThreadPoolExecutor解决办法
查看>>
AC日记——换教室 洛谷 P1850
查看>>
UIView翻译 (参考)
查看>>
nginx学习笔记(二)
查看>>
05《高效程序员的45个习惯》阅读笔记3
查看>>
法人银行贷款逾期信息查询
查看>>
如何判断表中是否有值
查看>>
什么是CDN(转)
查看>>
【转】: 塞尔达组在GDC2017演讲的文字翻译:显示的力量
查看>>
IO学习
查看>>
实验二
查看>>
《世界因你不同》-笔记
查看>>
洛谷P1966 火柴排队[NOIP提高组2013]
查看>>
验证SQLServer死锁进程
查看>>
MySQL中kill掉所有表的进程
查看>>
毛玻璃效果
查看>>
ETW (Event Tracing for Windows)介绍
查看>>
另一种阶乘问题
查看>>
三十三、MySQL 导入数据
查看>>
侧耳倾听
查看>>