当前位置: 首页 > news >正文 山东省建设监理网站物联网的网络架构 news 2025/10/31 1:10:47 山东省建设监理网站,物联网的网络架构,如何制作香水 简单,做购实惠网站的意义Kotlin对象表达式和对象声明 对象表达式 有时#xff0c;我们想要创建一个对当前类有些许修改的对象同时又不想重新声明一个子类。如果是Java#xff0c;可以用匿名内部类的概念来解决这个问题。kotlin的对象表达式和对象声明就是为了实现这一点(创建一个对某个类做了轻微改…Kotlin对象表达式和对象声明 对象表达式 有时我们想要创建一个对当前类有些许修改的对象同时又不想重新声明一个子类。如果是Java可以用匿名内部类的概念来解决这个问题。kotlin的对象表达式和对象声明就是为了实现这一点(创建一个对某个类做了轻微改动的类的对象且不需要去声明一个新的子类)。 对象表达式的格式 Object[: 若干个父类型中间用逗号分隔] 例如下例常见的通过对象表达式实现的将一个匿名内部类的对象用于方法的参数中 computer.addMouseListener(object : MouseAdapter() {override fun mouseClicked(e: MouseEvent) {// ...}override fun mouseRolled(e: MouseEvent) {// ...} }) 通过对象表达式可以越过类的定义直接得到一个对象 fun main(args: ArrayString) {val site object {var tips: String 谷歌大法好var url: String www.Google.com}println(site.tips)println(site.url) } 对应的控制台输出为 如果超类有构造器则需要传入合适的参数。多个超类在冒号之后使用逗号分隔大抵格式如下 open class BaseA(x: Int){public open val num: Int x }interface InterfaceB {...}val ab: A object : BaseA(1) , InterfaceB{override val num 15 } 用作类型的匿名对象只能在局部和私有声明中。如果使用匿名对象作为public函数的返回值或public属性的类型则函数或属性的实际类型实际为匿名类的超类或Any未声明任何超类。匿名对象添加的成员不能被访问。下面是一个官网的例子 class Demo{// 私有函数所以返回类型为匿名对象类型private fun foo() object {val x: String foo}// Public函数返回类型为Anyfun publicFoo() object {val x: String FOO}fun bar() {val x1: String foo().x // 有效val x2: String publicFoo().x // 提示错误无法引用x} } 对象声明 在Kotlin中使用 object 关键字来声明一个(单例)对象。这点跟Java是完全不一样的在Java中必须先有类然后才能new出该类的对象并生成实例也就是声明类和创建对象是两个分开的步骤并有先后次序。在Kotlin中我们可以使用object关键字在声明定义一个类的同时创建出一个对象这就是所谓的对象声明。 使用方法极其简单在 object 关键字后跟⼀个名称即可这样就直接声明了一个单例对象。 object DataProviderManager {fun registerDataProvider(provider: DataProvider) { // ……}val allDataProviders: CollectionDataProviderget() // …… } 要引⽤该对象直接使⽤其名称即可 DataProviderManager.registerDataProvider(……) 注意这里是单例当你定义两个不同的变量来获取这个对象时你会发现你并不能得到两个不同的变量如下例我们只对一个对象实例进行了属性更改但打印两个对象实例都会得到更改的属性 object WebSite {var url:String val web: String 谷歌大法好 } fun main(args: ArrayString) {var s1 WebSitevar s2 WebSites1.url www.Google.comprintln(s1.url)println(s2.url) } 对应的控制台输出为 与对象表达式不同的是当对象声明在另一个类的内部时这个对象并不能通过外部类的实例访问到该对象而只能通过类名来访问同样该对象也不能直接访问到外部类的方法和变量。 object WebSite {var web 谷歌大法好object DeskTop{var url www.Google.comfun showName(){print{desk legs $web} // 错误不能访问到外部类的方法和变量打印结果为Function0java.lang.String}} } fun main(args: ArrayString) {var site WebSitesite.DeskTop.url // 提示错误不能通过外部类的实例访问到该对象WebSite.DeskTop.url // 调用方式正确 } 伴生对象 跟Java不同在kotlin中类是没有static方法的。多数情况下Kotlin推荐的做法是使用包级别的函数作为静态方法。这里就引申除了另外一个关键字companion。 在类内部的对象声明可以用 companion 关键字标记这样它就与外部类关联在一起我们可以直接通过外部类访问到对象的内部元素。 class DemoClass {companion object Factory {fun create(): DemoClass DemoClass()} }val instance DemoClass.create() // 变量可直接访问到对象的内部元素 我们可以直接省略掉该对象的对象名然后使用 companion 替代需要声明的对象名 class DemoClass {companion object {} }val instance DemoClass.Companion 这里需要注意的是一个类里面只能声明一个内部关联对象即关键字 companion 只能使用一次。 伴生对象的成员看起来像其他语言的静态成员但在运行时他们仍然是真实对象的实例成员。在 JVM 平台如果使⽤ JvmStatic 注解你可以将伴⽣对象的成员⽣成为真正的静态⽅法和字段。 差异性 最后总结下对象表达式和对象声明之间有一个重要的语义差别 · 对象表达式是在使用他们的地方立即执行的 · 对象声明是在第一次被访问到时延迟初始化的 · 伴生对象的初始化是在相应的类被加载解析时与 Java 静态初始化器的语义相匹配。 文章转载自: http://www.morning.qhmgq.cn.gov.cn.qhmgq.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.qlrtd.cn.gov.cn.qlrtd.cn http://www.morning.bzfwn.cn.gov.cn.bzfwn.cn http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.lksgz.cn.gov.cn.lksgz.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.twdkt.cn.gov.cn.twdkt.cn http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn http://www.morning.mmosan.com.gov.cn.mmosan.com http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn http://www.morning.fqyqm.cn.gov.cn.fqyqm.cn http://www.morning.tsnwf.cn.gov.cn.tsnwf.cn http://www.morning.xxrgt.cn.gov.cn.xxrgt.cn http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.zfxrx.cn.gov.cn.zfxrx.cn http://www.morning.mqwnz.cn.gov.cn.mqwnz.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.dmzqd.cn.gov.cn.dmzqd.cn http://www.morning.lsyk.cn.gov.cn.lsyk.cn http://www.morning.yhsrp.cn.gov.cn.yhsrp.cn http://www.morning.srgyj.cn.gov.cn.srgyj.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.wjplr.cn.gov.cn.wjplr.cn http://www.morning.fmqw.cn.gov.cn.fmqw.cn http://www.morning.rfyk.cn.gov.cn.rfyk.cn http://www.morning.jghty.cn.gov.cn.jghty.cn http://www.morning.xpzkr.cn.gov.cn.xpzkr.cn http://www.morning.crqbt.cn.gov.cn.crqbt.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.kjmws.cn.gov.cn.kjmws.cn http://www.morning.dpruuode.cn.gov.cn.dpruuode.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.kflbf.cn.gov.cn.kflbf.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.nfqyk.cn.gov.cn.nfqyk.cn http://www.morning.dhqyh.cn.gov.cn.dhqyh.cn http://www.morning.kqrql.cn.gov.cn.kqrql.cn http://www.morning.zlhzd.cn.gov.cn.zlhzd.cn http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.drwpn.cn.gov.cn.drwpn.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.rnxs.cn.gov.cn.rnxs.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn http://www.morning.lmfxq.cn.gov.cn.lmfxq.cn http://www.morning.trmpj.cn.gov.cn.trmpj.cn http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.hytr.cn.gov.cn.hytr.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.bpcf.cn.gov.cn.bpcf.cn http://www.morning.rjznm.cn.gov.cn.rjznm.cn http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn http://www.morning.lyhry.cn.gov.cn.lyhry.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn http://www.morning.fbxlj.cn.gov.cn.fbxlj.cn http://www.morning.fzqfb.cn.gov.cn.fzqfb.cn http://www.morning.wdpt.cn.gov.cn.wdpt.cn http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn http://www.morning.rknhd.cn.gov.cn.rknhd.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn http://www.morning.glwyn.cn.gov.cn.glwyn.cn http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.rsbqq.cn.gov.cn.rsbqq.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn 查看全文 http://www.tj-hxxt.cn/news/263835.html 相关文章: 中国建设部网站失信名单域名服务器ip 易班网站建设效果图制作公司赚钱吗 上海做网站站优云一一十七修水新闻最新消息 汕头建站模板源码无锡定制网站建设 有哪个网站有免费视频素材wordpress f5 网站建设的一些原理如何自己制作h5页面 哪些编程语言适合网站开发中国城市建设网 有什么设计网站推荐校园网组网方案设计 北京招聘网站建设做外贸网站包括哪些 自助发外链网站网站建设 方案 目前提供目录类搜索引擎的网站wordpress 纯静态 营销型网站开发营销软件技术专业介绍 昆明做网站竞价网站开发费用计入什么二级科目 网站培训建网站在线支付怎么 wordpress搭建短视频网站三原做网站 高端网站开发哪家专业网站设计哪家专业 网站建设 体会wordpress主题中文主题下载 济宁软件开发网站建设淘宝上开个网站建设 wordpress 多站点门户网站开发人员招聘信息 iis 网站正在建设中wordpress post_class 全flash网站模板活动营销方案 wordpress建设企业网站雅布设计作品 兼职做猎头的网站me域名网站 淘宝客网站主题下载游戏培训学校 金融网站html5模板摄影图片网站 沈阳专业制作网站公司吗网站建设 常用字体 百度里面企业网站怎么建设wordpress 无法发送邮件 资中网站建设四川做文学有关的网站 成都和奇乐网站建设公司怎么样建立个机密网站 淘宝客网站 备案wordpress新闻页面模板下载