专栏首页大话swiftfindById引发的Java泛型思考

findById引发的Java泛型思考

在Android中最头痛的就是不停的findById需要不停的进行类型转换,那么怎么实现在findById的时候直接设置转换后的类型呢?

1 首先想到的就是使用泛型函数实现

public <T extends View> T findViewById(int resId){
    return  (T)itemView.findViewById(resId);
}

然后我们想,怎么给定一个这个函数再添加个参数来限定返回类型呢?

public <T extends View> T dingViewById(int resId, Class<T> cla ){
  return   cla.cast(itemView.findViewById(resId));
}另一种实现
public <T extends View> T findViewById(int resId, Class<? extends T> cla) {
    return cla.cast(itemView.findViewById(resId));
}

我们看看怎么使用

dingViewById(R.id.holder_desc,TextView.class).setText();

当然了这个在Java中就是个鸡肋,但是到了Kotlin就十分有用,因为Java没有扩展而Kotlin使用extension的我们可以直接给Activity/View添加扩展函数实现即可方便的实现findViewById的时候设置限定转换的类型,这样我们就可以避免掉重复的类型转换工作啦

本文分享自微信公众号 - 大话swift(gh_ca2266b7cab0)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用golang写一个基本的服务器

    go自带基本的http系统,开源的go web服务相关的框架大多是基于此进行的扩展延伸,比如以快速小巧著称的gin,国人写的beego等,以及爬虫框架colly...

    大话swift
  • SwiftUI值弹出菜单

    }) {

    大话swift
  • SwiftUI之侧边栏菜单实践

    我们采用Stack对应的VStack HStack ZStack来组合完成一个侧边菜单

    大话swift
  • 小程序自定义单页面、全局导航栏

    产品说小程序返回到首页不太方便,想添加返回首页按钮,UI说导航栏能不能设置背景图片,因为那样设计挺好看的。

    super.x
  • 小程序自定义单页面、全局导航栏

    产品说小程序返回到首页不太方便,想添加返回首页按钮,UI说导航栏能不能设置背景图片,因为那样设计挺好看的。

    Fundebug
  • [BCG]使属性页表单实现最大化最小化按钮1[可拖拽]

    原文链接:http://blog.csdn.net/humanking7/article/details/52598085

    祥知道
  • 我想给你介绍一个假的苹果网站

    网站的 URL 地址显示的是苹果官网,网址旁边是安全字样和绿色小锁,表示网站信息基于 https 加密传输,完全没什么问题,然而它就是一个钓鱼网站(演示网站)。

    疯狂的技术宅
  • Android中Window的管理深入讲解

    Window 表示一个窗口的概念,是一个抽象的概念,每一个 Window 都对应一个 View 和一个 ViewRootImpl,Window 和 View 通...

    砸漏
  • 云编排技术:探索您的选择

    最近 IT 行业有很多围绕云编排的议论,而且许多人想知道云编排到底是怎么回事。本文将探索云编排的概念,以及它将如何融入云计算的大发展趋势中。我将分析各种编排工...

    shaonbean
  • hibernate基本使用

    hibernate框架应用在web三层架构的DAO层,是对JDBC的一种轻量级的封装,对javaBeans和数据库表进行映射,就不用再自己编写sql语句去获取对...

    木瓜煲鸡脚

扫码关注云+社区

领取腾讯云代金券