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

网站建设的通知网站维护分工做网站可以先做再给钱吗

网站建设的通知网站维护分工,做网站可以先做再给钱吗,安卓手机app下载软件,在哪里能找到建网站静态与顶层方法 静态方法(伴生对象) Java中有静态方法的概念,但是在Kotlin中这个静态方法被弱化了,还记得我们使用object创建一个单例类吗,创建的单例类我们当时可以使用像静态方法一样的调用方式取调用,…

静态与顶层方法

静态方法(伴生对象)

Java中有静态方法的概念,但是在Kotlin中这个静态方法被弱化了,还记得我们使用object创建一个单例类吗,创建的单例类我们当时可以使用像静态方法一样的调用方式取调用,但object修饰的类会把它的所有方法都变成类似静态方法一样的调用,于是Kotlin提供了companion object修饰符,用于在类中修饰静态方法,那样一个类就可以同时存在静态和非静态方法了。

class Student(name: String, age: Int, val clazz: String): Person(name, age), Study {override fun doHomeWork() {println("do homework.")}companion object {fun sayHello() {println("Hello!")}}
}

但是这种方式产生的类似静态方法一样的调用并非真正的静态方法,如果你在Java中使用类似静态方法的调用会发现根本找不到这个方法,companion object只是语法上模拟静态方法的调用方式,实际上它们都不是真正的静态方法,因此你如果需要在Java中调用,那么你需要在方法上加上@JvmStatic注解

class Student(name: String, age: Int, val clazz: String): Person(name, age), Study {override fun doHomeWork() {println("do homework.")}companion object {@JvmStaticfun sayHello() {println("Hello!")}}
}
顶层方法

在kotlin中,顶层方法指的是不用类似静态方法那样的调用方式调用的方法,比如Helper.kt文件中有一个sayHello方法,那么sayHello就是一个顶层方法,你可以在其他类中通过sayHello()直接调用,而不用通过Helper.sayHello()调用。

顶层方法的定义就是单纯一个kt文件,在里面定义的所有fun方法都将做为顶层方法,例如:

package dev.xuanran.kt2// Helper.kt
fun sayHello() {println("Hello!")
}
package dev.xuanran.kt2// Main.kt
fun main() {sayHello()
}

由于Java中没有顶层方法的概念,所以在Java中如果需要调用顶层方法的话,那么就需要通过Helper.sayHello()的形式调用。

延迟初始化

在正常的开发中,类里面肯定存在很多全局变量,而很多全局变量可能只有在类初始化的时候才能去创建实例,但由于Kotlin的变量不可为空的机制,你只能给类似的变量类型后面加上?来先手动给它赋值为null(这里的Demo假设student的对象实例需要通过网络获取)。

var student : Student? = nullfun main() {// network...
}

但是这样会产生一个缺点就是后续你再去调用student内部的方法时,因为你允许这个变量可空,所以每次调用都需要来检查是否为空。

为此,Kotlin提供了延迟初始化功能,使用lateinit修饰全局变量,那么就可以避免可空修饰?以及后续每次使用前用if判空。

lateinit var student: Studentfun main() {// network...student.doReadBook()
}

但是lateinit关键字也不是没有风险,如果你在它之前就调用它,那么还是会产生Exception的。

紧接着Kotlin也给我们提供了一种方式,帮助我们判断某个全局变量是否已初始化:::变量名.isInitialized,如果已经初始化过了,我们就可以不用再执行初始化操作了。

lateinit var student: Studentfun main() {if (!::student.isInitialized) {// network...}student.doReadBook()
}

lazy懒加载

lazy代码块是Kotlin提供的一种懒加载技术,代码块中的代码一开始并不会执行,只有当修饰的变量首次被调用的时候才会执行,并且将最后一行代码的返回值赋值给被修饰的全局变量,具体语法规则如下:

val p by lazy {println("b")"c"
}fun main() {println("a")println(p)
}

输出结果:a b c

http://www.yayakq.cn/news/300725/

相关文章:

  • 南昌企业自助建站wordpress 繁體
  • 沂南网站开发免费软件站
  • 德州金航网络公司网站建设互联免费主机
  • 广州网站建设推广专家团队wordpress 科技主题
  • 手机怎么做动漫微电影网站网站建设分金手指专业五
  • 沧州南皮网站建设网站建设方案500字
  • 做淘宝网站的主机杭州知名的网站制作策略
  • 网站视频怎么做的好处微信页面设计网站
  • 东莞网站建设教程泉州网页网站制作
  • 请私人做网站风险威海住房和城乡建设局官方网站
  • 网站开发工具 晴天娃娃做外贸是不是必须有网站
  • 科技网站排名网站服务器网址
  • 没有服务器建网站什么网站能买建设摩托车
  • 建筑业招聘网站苏州惊天网站制作网
  • 网站页面设计的特色网站建设单页
  • 为什么进行网站备案好的做淘宝详情页的网站有哪些
  • 门户网站指的是什么网站建设与管理ppt模板下载
  • 怎么查看一个网站是哪家公司做的新公司怎么建立自己的网站
  • 广东企业黄页网站天津自动网站建设调试
  • wordpress轮播图广告长沙seo公司
  • 自住房车各项建设部网站商务酒店设计网站建设
  • 做微信公众号微网站重庆网站建设外包哪家好
  • 网站建设 慕课东营网站开发招聘
  • 做推广网站排名网络合同怎么签有效
  • 张家界网站建设app豫建设标 网站
  • 建设营销型网站的优势icp备案网站接入信息怎么填
  • 中山市交通建设发展集团网站wordpress链接自动加斜杠
  • 昆明网站开发建网站qq访客记录原理
  • 树莓派做网站服务器怎样广告牌设计效果图
  • 官网设计比较好看的网站网站建设底部