您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

科特林实践经验+最佳实践中的那些坑 {源码交易平台}

  • 时间:2022-07-16 00:22 编辑: 来源: 阅读:300
  • 扫一扫,手机访问
摘要:科特林实践经验+最佳实践中的那些坑 {源码交易平台}
"确认"踩坑"并满足右Kotlin" Num1:方法参数不变,不可修改。在Java和Kotlin的互操作中,Java程序员会对class main {/* * kot Lin parameter is constant */fun print(a:int = 1,b:string = " " {/a = 10)有些不适应。//错误:不能重新分配Val!!!}}复制代码Num 2:无伴侣,实例?访问Java Kotlin中定义的静态变量和静态方法需要Companion。 示例://main . ktclassmain { companion object { valempty = " " funisempty(String:String = empty){//todo code } @ JVM field val FULL _ NUMBER = " 1234567890 " @ JVM static fun is NUMBER(String:String = FULL _ NUMBER){//todo code } } }复制代码//test.java类test { public static void main(String[]args){//Java访问常量KENG同伴;Kotlin中的get empty();肯。companion . isempty(" ");肯金斯坦斯特。instance . get empty();// Java可以访问Kotlin中用JvmField修饰的常量,而不需要伴随字符串full _ number = keng.full _ number// Java访问Kotlin中用JvmStatic修饰的方法,不需要同伴keng . is number(" ");}}复制代码不想用Companion,@JvmField,@JvmStatic注释来理解。 在Kotlin object Main{...}仍然适用。 这些注释,特别推荐在Kotlin中使用,让Java与Kotlin互操作,如丝般顺滑,没有任何变化,仿佛什么都没发生过。 Num 3:Java重载,如何在Kotlin中巧妙过渡?Kotlin调用Kotlin中的方法。如果有默认参数,您可以不传递任何参数。 在与Java Kotlin的互操作中,是相同还是需要传输?示例:is number(string:string = full _ number)://test . Java类test { public static void main(string[]args){ keng . is number(" ");//需要传参数}}复制代码能让Java享受到Kotlin默认参数的喜悦吗?//test . javaclasstest { public static void main(string[]args){//JVM overloads批注,默认实现重载功能keng . isnumberwithooverloads();keng . isnumberwithooverloads(" ");}}复制代码注意:当@JvmOverloads与Android View系统控件一起使用时,需要格外注意。 num:kot Lin中的空手势如下。用Java应该没问题,但是用Kotlin的编译器编译不出来。 var nullableString: String?=空...fun testNullableString(){ if(nullableString!= null){ var nullable string GH = nullable string.length//An错误将在此处报告!!!}}复制代码将报告以下错误:error: (9,40) kotlin:智能强制转换为' string '是不可能的,因为' nullable string '是一个可变属性,可能已经被更改了所以,在kotlin中,正确的空判断姿势应该是这样的:fun testnullable string(){ var nullable string ngth = nullable string?。length}复制代码Num 5:Kotlin复制Java父类中的方法,这里有个漏洞:步骤1: Java父类定义了onDialogCreate,它包含一个非空参数:savedinstancestate//javakengbase . Java公共类javakengbase { public void onDialogCreate(object savedinstancestate){//Todo Nothing } }复制代码步骤2: Kotlin继承并复制Java Kengbase class Keng:Java Kengbase(){ override fun onDialogCreate(savedinstancestate:Any){//注意:这里是Any超级棒。onDialogCreate(SavedInstanceState)} }复制代码。第三步:利用Java多态性调用ONDIALOGCREATE,传入空参数公共类keng Java { public static void main(string[]args){ javakengbasekeng = new keng();keng . ondialogcreate(null);//注意:null参数}}这里复制代码可能有两个问题:第一个:“overrides nothing”是由:Any,而不是Any,在OnDialogCreate(saveInstanceState:Any)方法的定义中?增长 注意:不要相信AS编译器。使用快捷键重写方法时,仍然需要特别注意参数是否可以为空。错误:(17,5)kotlin:' on dialogcreate ' override nothing Second:IllegalArgumentException:指定为非null的参数即使编译了也是null,运行时可能会抛出指定为非null的参数为null异常,这也是Java和kot Lin混合开发中的高频异常。 综上所述,以上问题很好处理。就加个?九客 覆盖fun on dialog create(savedInstanceState:Any?)复制代码Num 6:Kotlin“恶意”,连TODO!下面的普通TODO()将抛出一个RuntimeException!Fun testTodo(): Unit {TODO()}复制代码这个错误是:kotlin.notimplemented错误:一个操作没有实现。,我们来看看TODO()的实现:public inline fun TODO():nothing = throw notified error()。在代码Num 7中复制了pit obj is字符串:is和as后,在作用域中进行了类型转换,有点类似java的多态性。 fun testAsIs() { var obj: Any?= null if (obj是字符串){//方法体中的作用域,obj是字符串var length = obj.length }}复制代码作为的两种不推荐使用的方法,会抛出异常:Typecast异常:null不能强制转换为非null类型kotlin.String//拼写错误为1。当文本不是字符串或为空时,异常将被报告为var strAble1 = text as String//,错误将被写入2。当文本不是字符串时,也会报告异常var strAble2 = text as String?复制代码的推荐书写方法为://正确书写。如果转换失败,将自动转换为空对象var strAble = text as?复制字符串代码num 8:kot Lin中的属性知识。在Kotlin中,一个属性被称为有或没有后台字段的属性,而在Java中,field+get和set方法可以一起成为一个属性。 Var = 0set (value) {age = value+1}如果这样复制代码,实际上会发生递归,赋值无法成功。 玉在前,你就不会再做轮子了。 对于那些特别感兴趣的人,你可以进入门户网站:Howshea来了解科特林的房产。由于实践中的坑总是和最佳实践一起出现,最后附上几个最佳实践,为读者提供晚餐:Num 1:also关键字,最佳实践:while(缓冲读者。readline()。也({line = it})。= null) {// do something}复制代码相当于Java中的:while((line = buffer reader . readline())!= null) {//做点什么}复制代码Num 2:takeIf关键字,最佳实践://原代码if (someObject!= null & amp& ampStatus) {doThis()}//最佳实践someObject?。takeIf{ status }?。应用{ doThis()}复制代码Num 3: singleton模式的编写。至于设计图样的写法,珠玉在先,轮子也不重复制造。Portal: Kotlin的五个单实例编写与java的对比。 //Java实现公共类singleton { private volatile static singleton实例;private Singleton(){ } public static Singleton getInstance(){ if(instance = = null){ synchronized(Singleton . class){ if(instance = = null){ instance = new Singleton();} } }返回实例;}}//kotlin实现类singleton私有构造函数(){ companion object { valinstance:singleton by lazy(mode = lazythreadsafetymode。同步){singleton ()}}}


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部