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

为什么Kotlin编译器不强制我在接口中定义我的val的首字母?

Kotlin编译器不强制在接口中定义val的首字母的原因是为了提供更大的灵活性和可读性。在Kotlin中,接口是一种定义行为的抽象类型,而不是仅仅定义属性的地方。因此,Kotlin编译器允许在接口中定义属性时不强制遵循命名约定。

这种灵活性使得开发人员可以根据具体情况来命名属性,以提高代码的可读性和可理解性。例如,如果属性表示一个名字,可以将其命名为"name",而不是强制命名为"firstName"或"lastName"。这样的灵活性使得代码更加清晰和易于理解。

然而,尽管Kotlin编译器不强制在接口中定义val的首字母,但是在实际开发中,建议遵循一致的命名约定以提高代码的可读性和可维护性。在接口中定义的属性应该具有描述性的名称,以便其他开发人员能够理解其含义和用途。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法提供相关链接。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin 开发者角度看 Java 缺失特性

虽然 Kotlin 也被编译为 JVM 字节码,但有时候还是不得不写一些  Java 代码。每次写 Java 代码时,都不禁想,为什么 Java 代码看起来没有 Kotlin 那么好。...Java 允许你定义不可变引用,但不是强制。默认情况下,引用是可变。大多数 Java 代码没有使用不可变引用。...Kotlin 就没有给你这种选择:每个属性和局部变量都需要定义val 或 var。另外,不能重新给方法参数赋值。 Java 中 var 关键字完全不同。首先,它只能用于局部变量。...Kotlin 仍然需要遵循 JVM 规范,并与 Java 编译器生成字节码兼容。它可以通过内联来实现:编译器用函数体替换内联方法调用。...必要时候使用 Java,因为 Kotlin 已经成为 JVM 首选语言。

78920

为什么Spring Boot自定义配置项IDE里面不会自动提示?

一、背景 官方提供spring boot starter配置项,我们用IDE配置时候一般都有自动提示,如下图所示 而我们自己自定义配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现呢...二、提示原理 IDE是通过读取配置信息元数据而实现自动提示,而元数据目录META-INF中spring-configuration-metadata.json 或者 additional-spring-configuration-metadata.json...三、实现自动提示 以我这个自己开发starter中定义配置文件为例,如果自己手动创建这些元数据的话工作量比较大,使用IDEA的话有自动生成功能 3.1....引入依赖spring-boot-configuration-processor zlt-swagger2-spring-boot-starter工程中添加以下jar包 ...重新编译项目 项目重新编译后就会自动生成spring-configuration-metadata.json文件 四、测试 自定义swagger配置已经能自动提示了 参考资料 https:/

2.6K20
  • Kotlin 内联类 inline class请了解一下

    总结一下,当使用inline class时候,如果当前代码根据上下文可以推断出变量一定是inline class类型,编译器就可以优化代码,生成新类实例,从而达到节省内存空间目的。...inline classbug是什么原因产生 了解完基础知识之后,我们终于可以开始理解为什么文章开始时候提到bug会发生了。...class B字节码中,编译器会生成一个桥方法(bridge method)来让重写foo方法返回String类,但是同时方法签名维持父类类型。 ?...类型方法,加上代码中我们强制转型把B转成了A类,所以静态分析也会认为foo()方法返回值是Any,就会导致foo2变量不会被装箱,所以类型就一直是Object,以上代码打印结果也就是False...所以相应,解决这个bug办法也很简单,就是给inline class加上桥方法就好了! 这个bugkotlin 1.3时候被发现,1.4被fix。

    61520

    Kotlin安卓开发学习(2)

    , 30 5月 2022 作者 847954981@qq.com 后端学习, 编程之路 Kotlin安卓开发学习(2) 和很多现代高级语言一样,Kotlin也是面向对象。...因此,如果我们需要一个类可以被继承,需要在类前添加 修饰符”open“: open class Person { … } 加上open关键字之后,我们就是主动告诉Kotlin编译器,Person...= 0 } 与Java中不同,Kotlin中继承需要在继承类后面加上一对括号,为什么需要加上括号,这就涉及了Kotlin主构造函数和次构造函数概念。...因为接口中定义了待实现函数,所以我们使用接口后必须对函数进行实现。Kotlin中,我们使用override关键词来重写或者实现接口中函数。...除此之外Kotlin还增加了一个额外功能:允许对接口中定义函数进行默认实现。

    38520

    Kotlin 泛型:基本使用

    Kotlin 中声明和使用泛型类、泛型函数基本概念和 Java 相似,有 Java 泛型概念情况下,不用详细解释或者做进一步了解,也能够很容易地上手使用泛型。...Kotlin 泛型:基本使用Kotlin 泛型:类型参数约束系列持续更新中,欢迎关注订阅。为什么需要泛型假如我们想实现自定义列表类型,用于存放数值、字符串或其他具体类型。...当我们定义」泛型类、泛型函数时,我们使用是「类型参数」;当我们「使用」泛型类、泛型函数时,我们使用是「类型实参」。...定义泛型类、泛型函数方式如下:// --- 泛型函数 ---fun run(param: P) // 仅用于函数参数,定义泛型类、泛型接口中fun run(): R // 仅用于函数返回值...,定义泛型类、泛型接口中fun invoke1(param: P): R // 用于函数参数和返回值,定义泛型类、泛型接口中fun filter(predicate: (T)

    1.7K30

    第8章 泛型第8章 泛型

    为了集合类通用性,把元素类型定义为Object,当放入具体类型时候,再作相应强制类型转换。...当我们从集合中获取一个值时候,我们不能都使用Object类型,需要进行强制类型转换。而这个转换过程由于添加元素时候没有作任何类型限制跟检查,所以容易出错。...集合类API中大量地使用了泛型。Java 中我们可以为类、接口和方法分别定义泛型参数,Kotlin中也同样支持。本节我们分别介绍Kotlin泛型接口、泛型类和泛型函数。...Int was expected map.put("5","e") ^ Kotlin中有类型推断功能,有些类型参数可以直接省略写。...生成 class 字节码文件中是包含泛型中类型信息。例如在代码中定义List和List等类型,在编译之后都会变成List。

    1.9K20

    Kotlin学习笔记(二)-程序结构(上 )

    S1值 所以是编译期常量 } 变量(var) var = variable var x ="HelloWorld"//定义变量 x ="HiWorl"//再次赋值 类型推导 编译器可以推导量类型...,Kotlin中函数也是可以做到像Java对象一样,下面结合代码来体验一下 fun main(args: Array) { //建议这么去写 这么写 是无法区分你想调用是常量还是函数...//这里和重载也不相同 因为val sum =fun 后面是无方法名方法 //这里默认是调用方法 如果想调用常量方法 可以使用sum.invoke()等价于 sum()...接受一个 string 对象,并在控制台打印,返回任何值(看起来像是返回voidKotlin中时Unit) (String s) -> System.out.print(s) Lambda表达式要是细说的话可能一篇文章也不够...,觉得刚开始看虽然代码变更简洁,但是对这种只会Java一种语言来说一下子转变有时候还是挺别扭,感觉这个就得多写多看慢慢适应。

    62720

    Kotlin 泛型详解

    最近一段时间在网上发了一套 Kotlin 入门视频,涵盖了基础语法、面向对象、高阶函数、DSL、协程等比较有特色知识点,不过有朋友提出了疑问:这门课为什么专门讲讲泛型、反射和注解呢?... Kotlin 当中有一个关键字叫做 reified,还有一个叫做 inline,后者可以将函数定义为内联函数,前者可以将内联函数泛型参数当做真实类型使用,我们先来看例子: inline fun...这也很容易解释为什么 MutableCollection 是不变,而 Collection 是协变,因为 Kotlin 当中,前者是可被修改,后者是不可被修改。...@UnsafeVariance 来告诉编译器:“知道干啥,保证不会出错,你不用担心”。...例如: List list = new ArrayList(); 这类用法 Kotlin 当中是不被允许。上面的代码大致相当于: val list = ArrayList<Any?

    1.2K20

    2. 变量声明与类型推断

    接下来我们看 Kotlin 是怎么声明: // 播放器一些变量 var isPlaying = false val songName = "Dingdingdong" val readyForPlayingData...类型推断与 var Kotlin 不再需要显式声明变量类型,取而代之是通过赋值类型来判断。事实证明,绝大部分情况都是 work 。而且编译器非常聪明,甚至连参杂了多种类型范型都能推断出来!...开个玩笑,我们还是需要知道为什么不要 final var,要val Java 年代,我们很少用 final 这个关键字,虽然很多变量,类型和函数都符合 final 设定。...大部分变量我们只会设置一次,大部分函数也不会被继承。那为什么不用上呢?唯一原因就是因为打 final 太麻烦了!而 val 就是为了解决“final”打起来太麻烦而设计。...p=1774 共享此文章: 点击以 Twitter 上共享(新窗口中打开) 点击以 Facebook 上共享(新窗口中打开) 相关

    67130

    Kotlin val list: ArrayList= ArrayList() 居然报错!

    Kotlin.flex 这个文件中发现: ">=" { return KtTokens.GTEQ ; } 惊讶吧。...这样看起来似乎跟我们前面猜测没有什么两样。 ? 显然语法分析之前,这俩符号已经被强制结合成 >=,后面也并没有做重新解析操作。...4 一些思考 实际上通过前面的讨论,我们就知道为什么 Kotlin 移位居然不用 >> 和 <<,而是 shr 和 shr 这样中缀表达式,毕竟人家没办法识别呀。。...好啦,其实这都不是什么大问题了,这篇文章探讨那句代码本身就比较蛋疼: val list: ArrayList= ArrayList() 就问你为什么不去掉前面的类型,类型推导难道还不够吗...不过觉得>=编译器没解析好不是什么大问题,很多语言都有类似的缺陷,但是这从来不是一个问题。

    1.3K10

    你造吗,null 也能 toString()!

    把上面的代码改成了下面这样,想想也算是大无畏革命精神嘛, crash 谁 crash: Log.d(TAG, matchPoint.toString()) :大不了就 crash,谁怕谁 Kotlin...经常遇到为 null 数值,判空判到心碎 之前 Kotlin 论坛上面看到一个帖子,说一哥们经常遇到数值为 null 情况,期待能有什么特性帮到他。...首先大家必须明确一点,那就是这个空类型安全特性是非常棒,从此与空指针说拜拜也不是吹,原因很简单,这个特性强制要求开发者提高开发意识,每定义一个变量都对它是否可为 null 了如指掌,处处小心,自然也就不会有问题...= "If not necessary" 其次,Kotlin 编译器做了很多工作帮我们识别出那些虽然被定义为可空类型但却一定不为空变量,这种变量通常也得是不可变,也就是说,定义变量时,能定义只读变量就绝对不定义可变变量...—— 这时候,大家能体会到为什么 Kotlin 函数参数都是只读变量了吗?

    3.5K10

    介绍Kotlin第一部分(翻译篇)

    1、介绍Kotlin Kotlin是jvm新开发语言。 谷歌推广Kotlin作为其基于javaAndroid平台上第一类语言五月份。从那之后就纳闷:这是什么语言?...这背后还有一个理由,编译器现在可以决定是否要进行类型推断。这意味着Kotlin比Java有着更强大类型推断。实际上,你也可以不用声明这些类型编译器也会明白你意思。...我们第一个我们返回任何东西,所以我们可以省略到类型,在这种情况下可以使用Unit。第二个函数中,我们定义必须返回一个String,使用return语句。..., world" } println(SayerClass().sayIt()) // Hello, world 如您所见,这与Java非常相似,像Java8一样,Kotlin也可以口中提供默认实现...请注意,override关键字Kotlin中是强制

    66340

    不要用Java语法思维来写Kotlin

    操作符 1).多用 val 而不是 var Kotlinval代表只读, var代表可变。建议尽可能多使用 val。...val是线程安全,并且必须在定义时初始化,所以不需要担心 null 问题。只需要注意 val 某些情况下也是可变就行了。...()) 但kotlin字符串模版可以优雅做这个事情: val site = "http://woquanke.com" println("博客名字叫《全科》,博客地址是:$site") 4...) 对于不可变值,Kotlin一般不需要显式转换对象类型,编译器能跟踪is检查类型,需要时会自动插入类型转换代码(安全): fun classCast(a: Any) { if (a is...is声明属性同一模块中执行; 不适用于open属性,或者具有自定义getter属性! var局部变量—适用于变量类型检查和使用之间没有修改,且不在修改它lambda中捕获!

    3K40

    5. 函数声明与闭包(Closure)

    其实 Kotlin 就基本没有新东西,,是新语言都基本没有新东西。新语言都是把近些年好用特性组装起来,再加点自己见解,因地制宜 一下。 0....闭包概念介绍 闭包第一次接触是 JavaScript 上,函数当作“一等公民”编程语言都有这个概念。函数是“一等公民”意思是,函数和变量一样,它是某种类型实例,可以被赋值,可以被引用。...wiki 上闭包定义是:引用了自由变量函数,这个被引用自由变量将和这个函数一同存在,即使已经离开了创造它环境也例外。从定义来说,对闭包理解,是基于普通函数之上。...实现办法是 Kotlin 编译器给引用局部变量封装了一层引用。 版权所有,转载请注明出处: https://sickworm.com/?...p=1786 共享此文章: 点击以 Twitter 上共享(新窗口中打开) 点击以 Facebook 上共享(新窗口中打开)

    1.1K20

    写了多年Java,直到看到Kotlin,原来代码可以如此优雅!

    操作符 1).多用 val 而不是 var Kotlinval 代表只读, var 代表可变。建议尽可能多使用 val 。...val 是线程安全,并且必须在定义时初始化,所以不需要担心 null 问题。只需要注意 val 某些情况下也是可变就行了。...()) 但kotlin字符串模版可以优雅做这个事情: val site = "http://woquanke.com" println("博客名字叫《全科》,博客地址是:$site") 4...) 对于不可变值,Kotlin一般不需要显式转换对象类型,编译器能跟踪is检查类型,需要时会自动插入类型转换代码(安全): fun classCast(a: Any) { if (a is...is声明属性同一模块中执行; 不适用于open属性,或者具有自定义getter属性! var局部变量—适用于变量类型检查和使用之间没有修改,且不在修改它lambda中捕获!

    3.3K40

    Kotlin Primer·启程

    前言 本文是『张涛Kotlin之旅』,本来很早以前就有很多读者希望能写一些关于Kotlin文章,但是由于我本身对Kotlin不熟悉,所以找来了同事张涛文章,会持续更新一系列Kotlin文章~欢迎大家关注他博客...可以根据弹出窗口中提示(或直接在 JetBrains 插件市场搜索)下载链接,使用国内网盘离线下载功能,下载到网盘后再从网盘下载到本地。...首次创建工程需要等待一段时间,编译器这个时候正在帮助我们下载一些必要依赖项。...同时,由于两个文件不在同一个包下,需要导入Preson类所在包才能找到,当然,编译器已经帮我们解决了繁杂导包过程。...1.5 编码风格 有关编码风格一点建议,同 Java 类似,使用驼峰命名法,类名首字母大写,每个单词首字母大写;方法和属性变量首字母小写;采用四个空格缩进。

    1.1K30

    kotlin入门之泛型

    泛型 将具体类型泛化,编码时候用符号来值代类型,使用时再确定他类型。 因为泛型存在,我们可以省去强制类型转化。 泛型是跟类型相关,那么是不是也能使用与类型多态呢?...extends TextView> 泛型类型是个未知类型 ?,编译器确 定它是啥类型,只是有个限制条件。 由于它满足 ?...对于前者,显然我们要添加TextView是不可以 实际情况是编译器无法确定到底属于那一种。无法继续执行下去,就报错了。 你可能在想那么为什么使用通配符?呢? 其实,List<?...说完了Java泛型之后,我们回头看一下kotlin泛型。 kotlinout和in kotlin和java泛型一样,kotlin泛型本身也是不可变。...var list: List 和 Java 不同地方是,如果你类型定义里已经有了out或者 in, 那这个限制变量声明时也依然,不会被*号去掉。

    1.2K20

    你应该切换到Kotlin开发

    现在是开始使用新编程语言时候了。自从Kotlin成为谷歌官方语言后,你有没有心动? ? 想告诉你一个名为Kotlin新编程语言并且阐述为什么你应该考虑下一个项目中使用它。...以前非常喜欢使用JAVA,但是去年当我自己使用了Kotlin时候,真的不会在去想Java是一个更好选择(语言上)。 Kotlin是JetBrains公司开发。...但是将会聚焦到最初环境(JVM) 所以以下会给出几个你为什么需要切换到Kotlin语言开发原因(没有先后顺序) 一、与Java互通性 Kotlin能够达到和JAVA100%互通,也就是说你可以使用...Kotlin编译器会跟踪您逻辑做自动转换类型,这意味着不会有过多instanceof检测(明确转换) if (obj is String) { print(obj.toUpperCase...= "xyz" b = null // no problem 当你访问一个空变量时候,Kotlin强制避免NPES(NullPointerException)

    47800

    Kotlin学习笔记(一)-数据类型

    ,如果理解不对或是有疑问,真诚希望可以留言区大家进行讨论。...注意是不可变属性不是静态属性 var是可变属性,可以初始化,可以多次赋值 kotlin中不像java,基本数据类型可以用小写boolean声明。这里必须用他装箱类来定义。...Integer,Kotlin中是没有这个概念KotlinInt相当于int与Integer合体,编译器会帮我选择。...(2.0) val test2 = Test(2.0, 3) } 这段代码有点长,但是内容非常简单,也会分开来说 类定义: class 构造器(实参1/形参1,实参2/形参2){...Kotlin中继承是用冒号:来作为继承类或是实现接口 2处为次构造器,如果定义了主构造器那么次构造器需要继承主构造器 形参和实参 人这个类中定义形参,帅哥定义实参 init方法 当使用主构造器时

    75110

    从 Java 到 Kotlin,再从 Kotlin 回归 Java

    数据类 开放类 陡峭学习曲线 名称遮掩 这是 Kotlin感到最大惊喜地方。... Kotlin 中方法参数是一个值,所以你不能改变 num 参数。这是好语言设计,因为你不应该改变方法参数。但是你可以用相同名称定义另一个变量,并按照你想要方式初始化。...感觉 —— IDEA 是对无法想象存在这种遮蔽了方法参数有效用例。 类型推断 Kotlin 中,当你申明一个 var 或者 val 时,你通常让编译器从右边表达式类型中猜测变量类型。...这个多余字母到底起什么作用?为什么要把名称和类型分隔开?不知道。不过知道这会加大使用Kotlin难度。 第二个问题。...这个局限性不是Kotlin错。没有办法违反Liskov原则情况下生成正确基于值equals()实现。这就是为什么Kotlin不允许Data类继承原因。

    1.5K10
    领券