首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【学习笔记】区别Kotlinobject和companion object关键字

【学习笔记】区别Kotlinobject和companion object关键字 2017-06-20 by Liuqingwen | Tags: Kotlin | Hits ?...在 Kotlin ,除了 object 关键字还有个 companion object 关键字,这个又是什么鬼?怎么使用?有啥区别?在没有仔细阅读相关文档资料之前还真有点傻傻分不清了。...就是单例模式化身 object 可以实现 Java 匿名类 companion object 就是 Java static 变量 companion object 只能定义在对应 但是...object 匿名类可以继承并超越 Java 匿名类而实现多个接口 object 表达式当场实例化,但定义 object 变量是延迟实例化 object 和 companion object 都可以为其取名也可以隐姓埋名...但是, Kotlin object 可以。

2.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

糟糕 Kotlin 语法

,觉得十分反人类,在 Kotlin ,对象初始化可以省略 new 操作符,也即类后面再配个 () 即可,为啥一个初始化对象还能继续用 (),在直观感受下,我以为是初始化了一个对象,唯一让我觉得不像是初始化就是...UserUsecase 类,伪代码如下: class UserUsecase { operator fun invoke(userId: Int): User { // 从数据库根据...operator 操作重载符,为了了解这种语法,我在 Kotlin 中文网查了下该语法使用,在调用操作符章节中有所说明: 对象() 等价于 对象.invoke() ,()内为函数参数,也即我们上面的那段代码...userUsecase(1001).name // 等价于 val name2 = userUsecase.invoke(1001).name } } 也可以用 Kotlin...上面的示例给已足够简单,但实际在我们业务,比这还复杂,invoke 函数被封装到了父类,当我点进去时候根本找不到 invoke 函数,只能往上查看父类有没有,在找到 invoke 函数时才发现,

59120

Kotlin内联函数作用是什么

在以前,因为学过一段时间Kotlin(并没有实际开发中用过),很多东西都忘记了,但是kotlin代码看起来其实和Java没什么区别,感觉都差不多。所以不要认为 Kotlin 很难学。...Kotlin内联函数属于Kotlin高级特性之一,使用起来也非常简单。...没加 inline 之前 加上 inline 之后 解释就不用多说了吧,kotlin 自动帮我们将方法在编译期就加在了相应调用处,免除了 java 入方法栈与退栈。...非局部返回标记 为了不让lamba表达式直接返回内联函数,所做标记 相关知识点:我们都知道,kotlin,如果一个函数,存在一个lambda表达式,在该lambda不支持直接通过return...reified java,不能直接使用泛型类型 kotlin可以直接使用泛型类型 inline fun startActivity() { startActivity(Intent(this

1.3K10

Java tagging interface

在 Servlet 源码,所有的监听器类都实现了空接口 EventListener,代码如下所示: package java.util; /** * A tagging interface that...其次,显而易见是,这个接口没有任何方法或者抽象方法。 那么 tagging interface 是什么意思呢? 在 Java 实现或继承接口通常是为了给当前类或接口某种功能。...---- 另一方面,注解和 tagging interface 有着一定区别。 tagging interface 比注解有着更强限制能力。...而 tagging interface 通过继承技巧能够限定相关类必须实现某个其他接口。...interface Marker extends Foo { } 如上 Marker 是一个 tagging interface,但是其额外继承于 Foo 接口,所以实现了 Marker 接口类虽然不需要实现来自

79610

typescriptclass和interface

typescript这个东西说实在,真的是容易忘记,一段时间不用就感觉特别陌生,但是回过头来看看,又有一种熟悉感觉,有句话这么说ts越用越香,它确实能够规范我们书写格式,语法校验和类型校验等。...之前写过react+ts一个demo,但是时间久了就忘记了,现在也是趁着热度再回顾一下ts内容,以及一些高阶语法,现在我们回顾一下ts中常见类和接口,如果喜欢可以点赞,评论,关注公众号让更多的人看到...class 首页我们要清楚一点是typescript类和javascriptES6语法区别,千万不要混淆。ts相比于js添加了声明属性类型和参数类型以及返回结果类型。...speak():void; //抽象类和方法不包含具体实现 必须在子类实现 } //接口里方法都是抽象 interface Flying{ fly():void } interface...eat():void } class Dog extends Animal{ speak(){ console.log("汪汪汪") //重写:子类重写继承自父类方法

1.8K10

JAVAinterface接口使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边帮助文档 文章目录 前言 一、interface是什么?...(以下内容基于JAVA语言) ---- 提示:以下是本篇文章正文内容,下面案例可供参考 一、interface是什么?...interface是一种基于方法进行分类,其主要目的是为了弥补类相对于方法抽象。...关于不同方法实现就可以implement一个interface 1.接口格式 定义接口: 【public】interface 接口名【extends 父接口名】{} 实现接口: 【修饰符】class...而对于接口来说接口一般指就是抽象方法和常量集合(里面的数据以及方法只能是static和final类型) ---- 总结 以上就是今天要讲内容,关于interface用法,我们在使用interface

67210

SystemVeriloginterface几点理解

最近吃了没文化亏,想来就把interface好好看看。...---- 在SV中常用interface连接端口,它好处在于,方便了在sv模块声明不需要一个个写端口,直接在端口中实例化一个interface即可。接口中还可以包含任务函数、断言等等。...interface推荐写法 interface v_if ( input bit clk ); logic [ 31 : 0 ] data ; ........而且,虽然clk和interface其他端口定义位置不一样,但是在仿真环境还是可以使用.clk。这个仍然代表着interfaceclk信号。...但是需要注意是,使用时钟块时,不再需要添加上升沿或者下降沿关键字,给时钟块变量赋值时应当使用<=而不是=。 2.为什么resetn需要定义两次?一次在时钟块,一次在modport

3.1K20

JavaInterface天天都在写,你知道其背后原理是什么吗?

来源:网络技术联盟站 链接:https://www.wljslmz.cn/19657.html 接口是java核心概念之一,Java 接口是 Java 编程语言核心部分,不仅在 JDK 而且在...在 Java ,接口是一种抽象类型,包含方法和常量变量集合,它是Java核心概念之一,用于实现抽象、多态和多重继承。...Java不允许多继承,但是可以实现多个接口。 接口可以实现松耦合,一个类变化不会影响其他类。...与 Interface 其他方法不同,这些静态方法包含函数完整定义,并且由于定义完整且方法是静态,因此这些方法在实现类不能被覆盖或更改。...接口中静态方法可以在接口中定义,但不需要在实现类重写。

33440

Kotlin扩展

Kotlin 扩展 到底是什么?...简单使用: 扩展函数 //要扩展哪个类方法,被扩展类名就是哪个 fun 被扩展类名.扩展函数名(..参数..){ 函数体 } 例如: 在Array扩展一个元素交换方法 fun Array<Int...Kotlin 扩展是一个很独特功能, Java 本身并不支持扩展, Kotlin 为了让扩展能在JVM平台上运行,必须做一些独特处理 Kotiin 支持扩展方法和扩展属性 扩展实现机制 Java...但现在 Kotlin 扩展却好像可以动态地为一个类增加新方法,而且不需要重新修改该 类源代码,那 Kotlin 扩展实际情况是怎样呢?难道 Kotlin 可以突破 NM 限制?...实际上, Kotlin 扩展并没有真正地修改所扩展类,被扩展类还是原来类,没有任 何改变。

1.2K30

一次有趣 Kotlin 语法解析实践

业务方不知道哪些 key 是必选,导致每次都要去看下文档,哪些需要录入 无法知道这么多 key 对应着什么功能,json 里面也无法写注释,导致每次都要去查看文档该 key 表述是什么意思 那有什么办法解决这些问题呢...静态解析确实是个好主意,但目前可参考只有 java,如果业务方是用 kotlin呢?...[3]:遍历简单,可以拿到 Node 节点进行向下遍历 kotlinx.ast[4] :大而全 ast 解析库,适配规则非常多,但使用起来有点重 在简单了解和 demo 测试,决定使用 kastree...这个轻量级库来实现,在 README 描述,可以写个简单伪代码: // 读取 kt 文件内容 val code = File("xx/test.kt").readText() // 生成解析器...("node",v) } 用法非常简单,我们可以尝试解析我们注解类了,不过,我们得先了解下如果遍历 Node 节点,我们可以打印输出一下 Node 结构是什么,以下去除了无用信息,只保留了注解

89230

JVM[Ljava.lang.Object; 究竟是什么意思?

你是不是经常看到控制台输出如题日志,而似懂非懂。 今天我们就来介绍下这些L啦究竟是些什么东东。...比如说我们经常看到这样日志: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; 先来简单说一下, "["表示数组,后面跟着是具体类型...这里我们再给出一个典型例子来看看: (IDLjava/lang/Thread;)Ljava/lang/Object; 这就是表示一个方法,方法有三个参数,类型分别为I,D,L。返回值类型为L。...然后L类型要跟具体类型,然后以"/"替换包名".",L类型要以“;”分号结尾。...使用javap查看 上代码,我们新建一个S类,然后通过javap就可以看到具体类型了: package com.importsource.datastructure; class S { Object

4.9K10
领券