当前位置: 首页 > news >正文

短视频网站建设方案台州seo网站排名

短视频网站建设方案,台州seo网站排名,wordpress浏览器兼容,深圳门户网站有哪些1. 日常遇到的冗余的接口方法实现 日常开发中#xff0c;经常会要实现接口#xff0c;但是很多场景中#xff0c;只需要用到其中一两个方法#xff0c;例如 ActivityLifecycleCallbacks#xff0c;它有很多个接口需要实现#xff0c;但是很多时候我们只需要用到其中的一…1. 日常遇到的冗余的接口方法实现 日常开发中经常会要实现接口但是很多场景中只需要用到其中一两个方法例如 ActivityLifecycleCallbacks它有很多个接口需要实现但是很多时候我们只需要用到其中的一两个 val myActivityLifecycleCallbacks object : Application.ActivityLifecycleCallbacks {/*** 例如我们只需要监听 Activity 的创建和销毁那么 onActivityStarted onActivityResumed onActivityPaused* onActivityStoppedonActivityStoppedonActivitySaveInstanceState 这 6 个方法是完全没必要是做实现的* 即使是空实现*/override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {TODO(Not yet implemented)}override fun onActivityStarted(activity: Activity) {TODO(Not yet implemented)}override fun onActivityResumed(activity: Activity) {TODO(Not yet implemented)}override fun onActivityPaused(activity: Activity) {TODO(Not yet implemented)}override fun onActivityStopped(activity: Activity) {TODO(Not yet implemented)}override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {TODO(Not yet implemented)}override fun onActivityDestroyed(activity: Activity) {TODO(Not yet implemented)}}如果有多个不同业务需要实现这个接口就这样很容易产生代码冗余。有没有一种优雅的方式只需要实现自己需要的方法而不再需要去关注其他方法有的那就是利用 Java 的动态代理和 kotlin 的委托模式 2. 利用 Java 的动态代理和 Kotlin 的委托模式 首先需要实现一个通用的动态代理新建一个 Kotlin 文件 DelegateObject.kt这里通过 inline 和 reified 关键字获取到泛型的 class 信息 import java.lang.reflect.InvocationHandler import java.lang.reflect.Proxyinline fun reified T noOpDelegate() : T {val javaClass T::class.javareturn Proxy.newProxyInstance(javaClass.classLoader, arrayOf(javaClass), no_op_invocationHandler) as T }val no_op_invocationHandler InvocationHandler { _, _, _ - }这样就可以获取到任意一个接口的一个对象只是没有具体的实现。接着再利用 Kotlin 的 by 关键字实现对象委托 val myActivityLifecycleCallbacks object : Application.ActivityLifecycleCallbacks by noOpDelegate() {}由于 Kotlin 委托模式的原理实际上在编译期间也是会生成 ActivityLifecycleCallbacks 的所有方法先来看看转译后的实现 private final Application.ActivityLifecycleCallbacks myActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks)(new Application.ActivityLifecycleCallbacks() {// $FF: synthetic fieldprivate final Application.ActivityLifecycleCallbacks $$delegate_0;{int $i$f$noOpDelegate false;Class javaClass$iv Application.ActivityLifecycleCallbacks.class;Object var10001 Proxy.newProxyInstance(javaClass$iv.getClassLoader(), new Class[]{javaClass$iv}, DelegateObjectKt.getNo_op_invocationHandler());if (var10001 null) {throw new NullPointerException(null cannot be cast to non-null type android.app.Application.ActivityLifecycleCallbacks);} else {this.$$delegate_0 (Application.ActivityLifecycleCallbacks)var10001;}}public void onActivityCreated(NonNull NotNull Activity activity, Nullable org.jetbrains.annotations.Nullable Bundle savedInstanceState) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityCreated(activity, savedInstanceState);}public void onActivityDestroyed(NonNull NotNull Activity activity) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityDestroyed(activity);}public void onActivityPaused(NonNull NotNull Activity activity) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityPaused(activity);}public void onActivityResumed(NonNull NotNull Activity activity) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityResumed(activity);}public void onActivitySaveInstanceState(NonNull NotNull Activity activity, NonNull NotNull Bundle outState) {Intrinsics.checkNotNullParameter(activity, activity);Intrinsics.checkNotNullParameter(outState, outState);this.$$delegate_0.onActivitySaveInstanceState(activity, outState);}public void onActivityStarted(NonNull NotNull Activity activity) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityStarted(activity);}public void onActivityStopped(NonNull NotNull Activity activity) {Intrinsics.checkNotNullParameter(activity, activity);this.$$delegate_0.onActivityStopped(activity);}});现在已经将 ActivityLifecycleCallbacks 的匿名内部类对象委托给了 noOpDelegate 生成的代理对象。这样需要用到具体哪个方法时只需要再次重写即可例如文章最开始的例子可以变为 val myActivityLifecycleCallbacks object : Application.ActivityLifecycleCallbacks by noOpDelegate() {override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {TODO(Not yet implemented)}override fun onActivityDestroyed(activity: Activity) {TODO(Not yet implemented)}}经过精简的代码可以使代码更加简洁可以更好的聚焦业务实现
http://www.sczhlp.com/news/202883/

相关文章:

  • 基于django电商网站开发课设报告美容手机网站模板
  • 市场监督管理局怎么样seo服务
  • 上海英文网站建设公司已矣seo排名点击软件
  • 高校网站建设建议一个seo良好的网站其主要流量往往来自
  • 外贸网站推广技巧长沙征帆网络
  • wordpress 中文图片seo和sem
  • 2025年国际物流服务领域优质品牌最新推荐排行榜 —— 聚焦行业头部企业核心优势与选择参考
  • 购物网站功能详细介绍抖音开放平台工会
  • 外贸网站建设网站开发网页平面设计要学什么
  • 辽中网站建设网站开发的软硬件环境
  • 滨州网站网站建设番禺学校网站建设建议
  • 韶关住房和城乡建设部网站金融跟单公司网站建设
  • 泉州市住房和城乡建设部网站合肥做装修哪个网站好
  • 瑞金网站建设光龙网站怎么做百度认证吗
  • 佛山学校网站建设天津公司网站推广
  • 做网站的研究生专业长沙大的建网站公司
  • 企业网站建设方案机构wordpress主题圆角
  • 网站建设 百度文库今天安阳最新消息
  • 郑州制作网站设计做网站放什么
  • 建设一个网站要多少钱上永远的吗旅游投资公司网站建设ppt模板
  • 网站建设容易学吗如何让百度收录我的网站
  • 特色美食网站建设策划书网站左侧分类菜单怎么做
  • 网站建设vi设计蛋糕店网站设计模板
  • 沈阳公司网站制作网站建设客户人群
  • 网站建设能赚钱吗怎么让客户做网站
  • 广州h5设计网站公司沈阳头条新闻
  • 网站建设属于哪个税目用什么做网站好
  • 摄影作品网站建设方案书品牌形象推广
  • 网站改版与优化协议书网站开发者id
  • 在线做爰视频网站网站风格类型