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

广汉市建设局官方网站济南市住房和城乡建设厅官网

广汉市建设局官方网站,济南市住房和城乡建设厅官网,VPS如何做网站服务器,怎么做网页链接二维码一、概述 Kotlin 2.0.20英文版官方文档 Kotlin 2.0.20发布了!这个版本包括对Kotlin 2.0.0的性能改进和bug修复,我们在其中宣布Kotlin K2编译器为Stable。以下是本次发布的一些亮点: 数据类复制函数将具有与构造函数相同的可见性来自默认目标层次结构的源集的静态访…

一、概述

Kotlin 2.0.20英文版官方文档

Kotlin 2.0.20发布了!这个版本包括对Kotlin 2.0.0的性能改进和bug修复,我们在其中宣布Kotlin K2编译器为Stable。以下是本次发布的一些亮点:

  • 数据类复制函数将具有与构造函数相同的可见性
  • 来自默认目标层次结构的源集的静态访问器现在可以在多平台项目中使用
  • Kotlin/Native的并发标记已经在垃圾收集器中成为可能
  • Kotlin/Wasm中的@ExperimentalWasmDsl注释有一个新位置
  • Gradle 8.6-8.8版本增加了支持
  • 一个新的选项允许在Gradle项目之间以类文件的形式共享JVM工件
  • 撰写编译器已更新
  • 对uuid的支持已添加到公共Kotlin标准库中

二、数据类复制函数与构造函数具有相同的可见性

Kotlin 2.0.20开始引入更改,以提高数据类的一致性,并替换实验性上下文接收器特性。

目前,如果使用私有构造函数创建数据类,则自动生成的copy()函数不具有相同的可见性。这可能会在稍后的代码中导致问题。在未来的Kotlin版本中,我们将引入copy()函数的默认可见性与构造函数相同的行为。此更改将逐步引入,以帮助您尽可能顺利地迁移代码。

我们的迁移计划从Kotlin 2.0.20开始,它会在代码中发出警告,将来可见性会发生变化。例如:

// Triggers a warning in 2.0.20
data class PositiveInteger private constructor(val number: Int) {companion object {fun create(number: Int): PositiveInteger? = if (number > 0) PositiveInteger(number) else null}
}/***  数据类复制函数与构造函数具有相同的可见性*  *  @ConsistentCopyVisibility 用于标记一个类或接口,以表明其副本在可见性方面应该是一致的。换句话说,当你创建一个类的副本时,副本的可见性应该与原始类实例的可见性相匹配。*/
fun testConsistentCopyVisibility(){val positiveNumber = PositiveInteger.create(42) ?: return// Triggers a warning in 2.0.20val negativeNumber = positiveNumber.copy(number = -1)// Warning: Non-public primary constructor is exposed via the generated 'copy()' method of the 'data' class.// The generated 'copy()' will change its visibility in future releases.
}fun main() {testConsistentCopyVisibility()
}

运行结果
在这里插入图片描述

报错信息

Non-public primary constructor is exposed via the generated 'copy()' method of the 'data' class.The generated 'copy()' will change its visibility in future releases.To suppress the warning do one of the following:
- Annotate the data class with the '@ConsistentCopyVisibility' annotation.
- Use the '-Xconsistent-data-class-copy-visibility' compiler flag.
- Annotate the data class with the '@ExposedCopyVisibility' annotation (Discouraged, but can be used to keep binary compatibility).To learn more, see the documentation of the '@ConsistentCopyVisibility' and '@ExposedCopyVisibility' annotations.

在这里插入图片描述
在这里插入图片描述

为了对这种行为有更多的控制,在Kotlin 2.0.20中,我们引入了两个注释:

  • @ConsistentCopyVisibility现在就可以选择加入该行为,否则我们会在以后的版本中将其设为默认值。
  • @ExposedCopyVisibility选择退出该行为,并在声明站点上抑制警告。注意,即使有了这个注释,当调用copy()函数时,编译器仍然会报告警告。

如果您想为整个模块而不是单个类选择2.0.20中已经有的新行为,您可以使用-Xconsistent-data-class-copy-visibility编译器选项。该选项与在模块中的所有数据类中添加@ConsistentCopyVisibility注释具有相同的效果。

三、标准库

标准库现在支持通用唯一标识符作为实验特性,并包括对Base64解码的一些更改。

3.1 在通用Kotlin标准库中支持uuid

本特性是实验性的。要选择加入,请使用@ExperimentalUuidApi注释或编译器选项-opt-in=kotlin.uuid.ExperimentalUuidApi。

Kotlin 2.0.20引入了一个类来表示通用Kotlin标准库中的uuid(通用唯一标识符),以解决唯一标识项的问题。

此外,该特性还为以下uuid相关操作提供了api:

  • 生成uuid。
  • 解析uid并将其格式化为字符串表示形式。
  • 从指定的128位值创建uuid。
  • 访问UUID的128位。

下面的代码示例演示了这些操作:

@OptIn(ExperimentalUuidApi::class)
fun testUUIDs(){val byteArray = byteArrayOf(0x55, 0x0E, 0x84.toByte(), 0x00, 0xE2.toByte(), 0x9B.toByte(), 0x41, 0xD4.toByte(),0xA7.toByte(), 0x16, 0x44, 0x66, 0x55, 0x44, 0x00, 0x00)val uuid1 = Uuid.fromByteArray(byteArray)val uuid2 = Uuid.fromULongs(0x550E8400E29B41D4uL, 0xA716446655440000uL)val uuid3 = Uuid.parse("550e8400-e29b-41d4-a716-446655440000")println(uuid1)
// 550e8400-e29b-41d4-a716-446655440000println(uuid1 == uuid2)
// trueprintln(uuid2 == uuid3)
// true// Accesses UUID bitsval version = uuid1.toLongs { mostSignificantBits, _ ->((mostSignificantBits shr 12) and 0xF).toInt()}println(version)
// 4// Generates a random UUIDval randomUuid = Uuid.random()println(uuid1 == randomUuid)
// false
}fun main() {
//    testConsistentCopyVisibility()testUUIDs()
}

运行结果
在这里插入图片描述

四、kt_2020.kt文件代码

package com.example.test.ktversionimport kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid//https://kotlinlang.org/docs/whatsnew2020.html
// Triggers a warning in 2.0.20// 数据类复制函数与构造函数具有相同的可见性
@ConsistentCopyVisibility
//data class PositiveInteger private constructor(val number: Int) {
//报错信息:Cannot access 'fun copy(number: Int = ...): PositiveInteger': it is private in
data class PositiveInteger constructor(val number: Int) {companion object {fun create(number: Int): PositiveInteger? = if (number > 0) PositiveInteger(number) else null}
}/***  数据类复制函数与构造函数具有相同的可见性**  @ConsistentCopyVisibility 用于标记一个类或接口,以表明其副本在可见性方面应该是一致的。换句话说,当你创建一个类的副本时,副本的可见性应该与原始类实例的可见性相匹配。*/
fun testConsistentCopyVisibility(){val positiveNumber = PositiveInteger.create(42) ?: return// Triggers a warning in 2.0.20val negativeNumber = positiveNumber.copy(number = -1)// Warning: Non-public primary constructor is exposed via the generated 'copy()' method of the 'data' class.// The generated 'copy()' will change its visibility in future releases.
}// https://kotlinlang.org/docs/whatsnew2020.html#standard-library
// 通用的标准库支持 UUIDs
// Constructs a byte array for UUID creation
@OptIn(ExperimentalUuidApi::class)
fun testUUIDs(){val byteArray = byteArrayOf(0x55, 0x0E, 0x84.toByte(), 0x00, 0xE2.toByte(), 0x9B.toByte(), 0x41, 0xD4.toByte(),0xA7.toByte(), 0x16, 0x44, 0x66, 0x55, 0x44, 0x00, 0x00)val uuid1 = Uuid.fromByteArray(byteArray)val uuid2 = Uuid.fromULongs(0x550E8400E29B41D4uL, 0xA716446655440000uL)val uuid3 = Uuid.parse("550e8400-e29b-41d4-a716-446655440000")println(uuid1)
// 550e8400-e29b-41d4-a716-446655440000println(uuid1 == uuid2)
// trueprintln(uuid2 == uuid3)
// true// Accesses UUID bitsval version = uuid1.toLongs { mostSignificantBits, _ ->((mostSignificantBits shr 12) and 0xF).toInt()}println(version)
// 4// Generates a random UUIDval randomUuid = Uuid.random()println(uuid1 == randomUuid)
// false
}
fun main() {testConsistentCopyVisibility()testUUIDs()
}
http://www.yayakq.cn/news/688220/

相关文章:

  • 手机网站建设的费用网站的标志是什么字体
  • 海创网站建设厦门网站建设有限公司怎么样
  • 建设企业网站个人网银自己怎么搭建个人博客网站
  • 做网站怎样快速收录赣州微信公众号制作
  • 网站 免备案百度seo怎么样优化
  • 网站建设公司的公司哪家好企飞互联网站建设网络公司
  • 怎么做视频还有网站吗成都网站建设开
  • 0511城市建设网站棚户区改造徐州建设工程交易平台
  • 网站开发国内外研究昆山h5网站建设
  • 湖北高企达建设有限公司网站网站违规关键词
  • 网站建设及推广优化苏州互联网大厂
  • 农业企业网站建设学校语言文字网站建设
  • 网站推广新手入门教程建造个网站花多少钱
  • 宿豫建设局网站休闲吧网站建设
  • 网站扁平化布局烟台建设公司网站
  • 全国可信网站怎样成立一个网站
  • 梁山网站开发国外做螺栓比较好的网站
  • 网站导航设计模板网页设计软件列表点击查看代码
  • 网站建设行业分析报告免费商城网站制作
  • 台州经典网站建设费用设计方案
  • 网站高质量链群怎么做wordpress4.9.4 使用教程
  • 网站建设哪家技术好广宗网站建设
  • 全网营销型网站建设公司网站建设案例收费情况
  • 免费做外贸的网站镇江地区做网站的公司
  • 河南省财政厅经济建设网站申请网站域名多少钱
  • 直接做的黄页视频网站签合网站是哪个好
  • 汕头哪里做网站长沙网站建计
  • 东莞网站优化福永论坛网站建设
  • 李静做的化妆品网站集团公司网站源码下载
  • 一般网站模块现在注册公司需要什么条件