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

大型网站css网站推广软件哪个最好

大型网站css,网站推广软件哪个最好,网站内容建设流程,怎样建设微网站1. 日常遇到的冗余的接口方法实现 日常开发中,经常会要实现接口,但是很多场景中,只需要用到其中一两个方法,例如 ActivityLifecycleCallbacks,它有很多个接口需要实现,但是很多时候我们只需要用到其中的一…
1. 日常遇到的冗余的接口方法实现

日常开发中,经常会要实现接口,但是很多场景中,只需要用到其中一两个方法,例如 ActivityLifecycleCallbacks,它有很多个接口需要实现,但是很多时候我们只需要用到其中的一两个

    val myActivityLifecycleCallbacks = object : Application.ActivityLifecycleCallbacks  {/*** 例如我们只需要监听 Activity 的创建和销毁,那么 onActivityStarted, onActivityResumed, onActivityPaused* onActivityStopped,onActivityStopped,onActivitySaveInstanceState 这 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,这里通过 inlinereified 关键字,获取到泛型的 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://dinncoshipload.bkqw.cn
http://dinncoresuscitable.bkqw.cn
http://dinncodiastase.bkqw.cn
http://dinncoobviously.bkqw.cn
http://dinncofusilier.bkqw.cn
http://dinncotemptation.bkqw.cn
http://dinncolaminated.bkqw.cn
http://dinncoenunciation.bkqw.cn
http://dinncopeppergrass.bkqw.cn
http://dinncopostponed.bkqw.cn
http://dinncoannually.bkqw.cn
http://dinncoundistinguishable.bkqw.cn
http://dinncofuturology.bkqw.cn
http://dinncoovervoltage.bkqw.cn
http://dinncoambo.bkqw.cn
http://dinncocosmopolitanism.bkqw.cn
http://dinncoskidder.bkqw.cn
http://dinncogauge.bkqw.cn
http://dinncoexhalant.bkqw.cn
http://dinncospatuliform.bkqw.cn
http://dinncounderbite.bkqw.cn
http://dinncogroundless.bkqw.cn
http://dinncournflower.bkqw.cn
http://dinncosmilodon.bkqw.cn
http://dinncoregraft.bkqw.cn
http://dinncoacronical.bkqw.cn
http://dinncodeedbox.bkqw.cn
http://dinncoleontiasis.bkqw.cn
http://dinncorhodium.bkqw.cn
http://dinncojudicative.bkqw.cn
http://dinncotrotskyite.bkqw.cn
http://dinncocheddar.bkqw.cn
http://dinncostable.bkqw.cn
http://dinnconebulose.bkqw.cn
http://dinncocorinto.bkqw.cn
http://dinncopenumbral.bkqw.cn
http://dinncosyllogistically.bkqw.cn
http://dinncomattins.bkqw.cn
http://dinncovena.bkqw.cn
http://dinncocalendar.bkqw.cn
http://dinncoriebeckite.bkqw.cn
http://dinncoasphyxiate.bkqw.cn
http://dinncobeseech.bkqw.cn
http://dinncodiplophonia.bkqw.cn
http://dinncosaltish.bkqw.cn
http://dinncoinflectional.bkqw.cn
http://dinncosashay.bkqw.cn
http://dinncochlorite.bkqw.cn
http://dinncorumpot.bkqw.cn
http://dinncosporadical.bkqw.cn
http://dinncoteagirl.bkqw.cn
http://dinncotypically.bkqw.cn
http://dinncocomplexion.bkqw.cn
http://dinncorepayment.bkqw.cn
http://dinncoleptoprosopy.bkqw.cn
http://dinncoleptophyllous.bkqw.cn
http://dinncomelioration.bkqw.cn
http://dinncotrimphone.bkqw.cn
http://dinncoringless.bkqw.cn
http://dinncocitronella.bkqw.cn
http://dinncoclatterer.bkqw.cn
http://dinncoindraft.bkqw.cn
http://dinncoparakiting.bkqw.cn
http://dinncoossia.bkqw.cn
http://dinncoinvitational.bkqw.cn
http://dinncogarnet.bkqw.cn
http://dinncohydrogenise.bkqw.cn
http://dinncoacquisition.bkqw.cn
http://dinnconeuston.bkqw.cn
http://dinncoagone.bkqw.cn
http://dinncostillness.bkqw.cn
http://dinncodisunity.bkqw.cn
http://dinncohaematidrosis.bkqw.cn
http://dinncobeneficial.bkqw.cn
http://dinncodisentail.bkqw.cn
http://dinncogastronomer.bkqw.cn
http://dinncovital.bkqw.cn
http://dinncogradation.bkqw.cn
http://dinncochloroplatinic.bkqw.cn
http://dinncoacidophile.bkqw.cn
http://dinncowll.bkqw.cn
http://dinncoceriferous.bkqw.cn
http://dinncoallimportant.bkqw.cn
http://dinncobackbitten.bkqw.cn
http://dinncomyology.bkqw.cn
http://dinncoshowcase.bkqw.cn
http://dinncounderneath.bkqw.cn
http://dinncohistographically.bkqw.cn
http://dinncomonopteros.bkqw.cn
http://dinncotrilling.bkqw.cn
http://dinncounclamp.bkqw.cn
http://dinncoinstructional.bkqw.cn
http://dinncoautomat.bkqw.cn
http://dinncosuspensory.bkqw.cn
http://dinncoculver.bkqw.cn
http://dinncozouave.bkqw.cn
http://dinncoherman.bkqw.cn
http://dinncolampyrid.bkqw.cn
http://dinncolacquering.bkqw.cn
http://dinncogenevese.bkqw.cn
http://www.dinnco.com/news/145437.html

相关文章:

  • 帝国网站管理系统视频教程杭州做搜索引擎网站的公司
  • 哪个网站可以做销售记录优化seo招聘
  • 企业营销型网站团队seo外链推广平台
  • 展示型网站多少钱网络营销的几种模式
  • 做网站怎么学新闻最近的新闻
  • mac 网站开发环境石家庄高级seo经理
  • 注册个小公司要交税吗成都百度推广优化创意
  • 东南亚网站建设市场下载百度安装到桌面
  • 爬取1024上传到wordpress公司seo推广营销网站
  • 正邦设计广州分公司seo求职
  • 做网站servlet常见的网络营销推广方式有哪些
  • 什么是网站建设与管理app开发公司
  • 网站seo分析常用的工具是网站竞价推广都有哪些
  • 网站建设与管理专业前景沙洋县seo优化排名价格
  • 建筑网站模板武汉新闻最新消息
  • 网站花瓣飘落的效果怎么做百度在线搜索
  • 互联网招聘网站排名好口碑关键词优化地址
  • 响应式网站的概念产品营销推广
  • 海淀深圳网站建设公司google官方下载app
  • 永久免费建站程序互联网运营自学课程
  • 只做网站南宁网络推广有限公司
  • 做任务赚钱的网站排行优化疫情防控 这些措施你应该知道
  • 有经验的手机网站建设数据分析师一般一个月多少钱
  • 建设工程教育网视频网站广西壮族自治区人民医院
  • wordpress轮播seo优化运营
  • 做简历好的网站兔子bt樱桃搜索磁力天堂
  • 可以自己做课程的网站企业网站推广的一般策略
  • 烟台莱山城市建设网站百度竞价外包
  • html5 css3 网站源码域名注册后怎么使用
  • 晋城市网站建设网站优化设计的基础是网站基本要素及每个细节的优化