首页
学习
活动
专区
圈层
工具
发布

Kotlin 委托属性在Android开发中的几个使用场景!

比如我们有一个String类型的属性param,这个属性的值需要去掉首尾的空格(trim)。...如你所见,委托属性并没有什么神奇的。但是,它虽然简单,却非常有用,让我们来看一些在 Android 开发中的例子。 你可以在官方文档中了解更多关于委托属性的内容。...所以让我们来写一个扩展函数用于往Bundle 中存储某种类型的值,在类型不支持的时候抛出异常。...我们把这个类型设为非空的,并且在不能读取时抛出了异常,这让我们可以在 Fragment 中获取非空的值,避免了空值检查。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。

6.4K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Kotlin】:: 双冒号操作符详解 ( 获取类的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )

    一、:: 双冒号操作符 ---- 在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 类 , 对象 , 函数 , 属性 的 类型对象 引用 ; 获取的这些引用 , 并不常用 , 都是在 Kotlin...反射操作时才会用到 ; 相当于 Java 中的 反射 类的 字节码类型 Class 类型 , 对象的类型 Class 类型 , 对象的函数 Method 类型 , 对象的属性字段 Field 类型 ;...1、获取类的引用 在 Kotlin 中 , 使用 :: 双冒号操作符 获取 类的类型对象引用 代码格式为 : Java或Kotlin类名::class 获取的 Kotlin 类 的 类型对象 的类型...KClass 说明 Kotlin 中 类的引用类型 KClass 中 提供了很多有用的属性 , 如 : public actual val simpleName: String?...} 2、获取对象类型的引用 在 Kotlin 中 , 使用 :: 双冒号操作符 获取 对象类型的引用 代码格式为 : Java或Kotlin实例对象::class 获取的 对象类型的引用 的类型 为 KClass

    7.5K11

    【错误记录】Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始化的成员属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常..., Kotlin 类 对象在实例化 时会执行一系列的 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值 类中的属性赋值 init 初始化块 中的代码执行 次构造函数 中的代码执行...首先 , 上述代码中没有主构造 函数 , 因此该项忽略 ; 然后 , 执行属性的赋值 , 代码中定义了 name 属性 , 但是没有进行赋值 ; var name: String 再后 , 执行 init...初始化块 , 其中先执行 nameFirstLetter 函数 , 在该函数中调用了 fun nameFirstLetter() = name[0] 中的 name 属性 , 但是 name 属性还没有赋值...在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常 ; 三、解决方案 ---- 调换 初始化代码块 中的代码顺序 , 先给

    3.3K10

    浅谈 var 关键字

    myValue = getValue(); 在其他语言中也有与var作用类似的关键字,比说C++中的auto,比如TypeScript中的let,比如kotlin中的val auto myInt = 1...在JavaScript中,var关键字最重要的作用是控制变量的作用域, 其中细节我们不在这里讲解,除此之外,它最大的作用可能就是使代码美观而已。...Integer myInt = 1; String strSql = "select * fromtableName"; 在声明一个变量时, 都会在变量名前加上这个变量的类型信息, 编译器是通过这个类型批注来判断变量类型的...你不得不根据这个函数的返回值写一串长长的类型代码, 而且, 当这个函数的返回值改变时,这个变量前面的类型批注也要跟着变,假如这个函数被调用一百次,那么修改这些调用代码将是一件异常头疼的事情,当然,你可以借助...如上面所说, C++的auto, C#的var,kotlin的var和val,都有类型推导的功能。

    1.3K80

    聊聊AbstractProcessor和Java编译流程

    我:AbstractProcessor只能处理注解,然后根据注解通过javapoet生成一个新的java类。...在每一轮中,可以向处理器询问process在前一轮产生的源文件和类文件上找到的注释的子集。 第一轮处理的输入是工具运行的初始输入; 这些初始输入可以被视为虚拟第0轮处理的输出。...这张图应该中其实缺少了一个流程,在source -> complier的过程中就应该把我们的Processor补充上去。 ? 把两张图结合就是整个java的编译流程了。...Set getSupportedOptions() 如果处理器类使用SupportedOptions进行批注,则返回具有与批注相同的字符串集的不可修改集。...SourceVersion getSupportedSourceVersion() 如果处理器类使用SupportedSourceVersion进行批注,请在批注中返回源版本。

    5.2K50

    arcengine+c# 修改存储在文件地理数据库中的ITable类型的表格中的某一列数据,逐行修改。更新属性表、修改属性表某列的值。

    作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下: 我的需求是: 已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素类...FeatureClass的属性表,而是单独的一个ITable类型的表格,现在要读取其中的某一列,并统一修改这一列的值。...表在ArcCatalog中打开目录如下图所示: ? ?...updateCursor = pTable.Update(queryFilter, false); int fieldindex = pTable.FindField("JC_AD");//根据列名参数找到要修改的列...= "X";//新值,可以根据需求更改,比如字符串部分拼接等。

    14.5K30

    使用C#代码隐藏或显示 Excel 中的批注

    为了提升工作表的可读性和视觉效果,可以根据需要隐藏现有批注,使数据展示更加清晰;在需要查看说明信息时,也可以随时重新显示这些批注。本文将介绍如何通过 C# 在 Excel 中隐藏或显示批注。...PM> Install-Package Spire.XLS在 Excel 中隐藏批注通过 Excel 处理库提供的批注可见性属性,可以控制批注是否显示。...将目标批注的可见性属性设置为 false,以隐藏该批注。使用 Workbook.SaveToFile() 方法保存结果文件。...只需将批注的可见性属性设置为 true,即可使其重新显示。以下是在 Excel 中显示批注的具体步骤:创建一个 Workbook 实例。...将目标批注的可见性属性设置为 true,以显示该批注。使用 Workbook.SaveToFile() 方法保存结果文件。

    17800

    Kotlin 1.2 的新增特性

    其他语言特性 注解中的数组常量 从 Kotlin 1.2 开始,注解的数组参数可以使用新的数组常量语法而不是 arrayOf 函数来传递: 数组常量语法被限制为注释参数。...目标平台:运行 Kotlin 1.2.0 版本的 JVM 检查一个 lateinit 变量是否被初始化 现在可以在属性引用上使用 isInitialized 来检查 lateinit 变量是否已经被初始化...弃用:枚举项中的嵌套类型 在枚举项中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。在 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。...弃用:改变只读属性的 backing 字段 在自定义 getter 中通过赋值 field = ......来改变只读属性的 backing 字段已被弃用,在 Kotlin 1.2 中会被警告,在 Kotlin 1.3 中将会报错。

    4K70

    用 C++构建自己的 GPT 文档工具

    如果能有一种方法将这些批注和相关文本存储在数据库中,那就太好了,更不用说基于人工智能的编辑潜力了。这正是我们的软件所要实现的目标:通过自动化这一过程,我们可以加快编辑工作流程。...在收到 ChatGPT 的回复之后,我们的工具会动态地将建议的编辑内容合并到相关的文本片段中,从而根据模型的见解无缝地增强内容。 这种自动化的编辑过程大大减少了手工工作量,并加快了文档的整体细化完善。...FindCommentsAndReply():该函数用于查找活动文档中的所有批注,向 ChatGPT API 发送请求以获取建议,并根据 API 响应更新每个批注的关联文本。...枚举批注 接下来,我们可以枚举文档中的所有批注,并打印每个批注的“已处理”(“Resolved”)状态。 在开始之前,我们不仅要枚举批注,还要枚举与之相关的文本。原因在于批注的最初目的。...通过自动提取编辑批注,与 ChatGPT 互动以寻求专家指导,并无缝集成编辑建议,我们使用户能够提高他们在 Word 文档中工作的质量和效率。

    2K20

    Kotlin 1.2 的新增了哪些特性?

    多平台项目 (实验性) 多平台项目是 Kotlin 1.2 中的一个新的实验性功能,允许你在 Kotlin – JVM, JavaScript 和(将来的)Native 上所支持的目标平台之间重用代码。...其他语言特性 注解中的数组常量 从 Kotlin 1.2 开始,注解的数组参数可以使用新的数组常量语法而不是 arrayOf 函数来传递: ? 数组常量语法被限制为注释参数。...目标平台:运行 Kotlin 1.2.0 版本的 JVM 检查一个 lateinit 变量是否被初始化 现在可以在属性引用上使用 isInitialized 来检查 lateinit 变量是否已经被初始化...弃用:枚举项中的嵌套类型 在枚举项中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。在 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。...来改变只读属性的 backing 字段已被弃用,在 Kotlin 1.2 中会被警告,在 Kotlin 1.3 中将会报错。

    3.9K10

    kotlin和java语言_我希望Java可以从Kotlin语言中窃取的10个功能

    在围绕Kotlin 1.0的发行大肆宣传之后,让我们认真看一下我们也应该在Java中拥有的一些Kotlin语言功能。     在本文中,我不会希望有独角兽。...请注意,在Kotlin中val是如何可能的: 局部变量类型推断。 现在正在为将来的Java版本进行讨论 。    ...哎呀,此功能是我每天在PL / SQL中使用的功能。 当然, 在Java中,您可以通过传递参数object来解决此限制 。    ...这将节省大量的时间来阅读和编写简单的粘合代码。 实际上,我们已经在批注中包含了语法。 例如,查看Spring神奇的@AliasFor批注。...在C#,Scala,Ceylon,Kotlin和许多其他语言中,我们可以在类型声明中声明它,而不是在其用法上声明(尽管许多语言都允许这两种)。

    1.9K00

    是时候使用Kotlin编程了

    变量类型可以根据变量值进行自动推导,这里Kotlin的基础类型都是对象,使用的是Java的包装类(基础类型包装成对象)。...伴生对象的调用跟Java一样,通过类名.属性名称或函数名称调用。 新特性 1,空安全 在Kotlin中,对象声明分为可空引用和非空引用两种。...2,泛型 泛型的存在主要是为了消除模板代码和类型转换安全, 在Kotlin中泛型的使用基本与Java是一致的。...在Java中泛型是不变的,比如:虽然A继承B,但List和List之间没有任何关系,Java是通过泛型通配符来实现型变的: 3,反射 反射是运行于JVM中的程序检测和修改运行时的一种行为,通过反射可以在运行时获取对象的属性和方法...Kotlin中的反射如下。 要调用具体的对象时,可以不通过KClass对象,直接调用方法和访问属性。

    4.4K10

    Kotlin 初体验:主要特征与应用

    我们希望不久之后,在你自己的项目中也能看到这样的代码,而不只是在书上。 Kotlin的主要特征 你大概已经知道了 Kotlin 是一种怎样的语言,让我们更加深入地了解一下它的关键属性。...在这些地方,使用 Kotlin 可以帮助开发者在实现目标的同时减少代码并避免麻烦。...正如你所看到的,Kotlin 的目标平台是相当广泛的。Kotlin并没有被限制在单 一的问题域,也没有被限制在解决软件开发者面临的某一类型的挑战。...但它的缺点是,在编译期不能发现像名字拼写错误这样的问题,继而导致运行时的错误。 另一方面,与 Java 不同的是,Kotlin 不需要你在源代码中显式地声明每个变量的类型。...很多情况下,变量类型可以根据上下文来自动判断,这样就可以省略类型声明。

    1.4K30

    Spring认证中国教育管理中心-Spring Data MongoDB教程十五

    转换器注册CustomConversions为中央工具,允许根据源和目标类型注册和查询已注册的转换器。...转换器消歧 通常,我们会检查Converter它们相互转换的源和目标类型的实现。根据其中一个是否是底层数据访问 API 可以本地处理的类型,我们将转换器实例注册为读取或写入转换器。...在启用了分片的数据库中分片集合。 指定分片键。此示例使用基于范围的分片。 19.2.分片键处理 分片键由一个或多个属性组成,这些属性必须存在于目标集合的每个文档中。它用于跨分片分发文档。...Java 中,charactersKotlin 是强类型的,但 Kotlin 巧妙的类型推断允许使用更短的语法。...取决于是否Mono可以为空(具有更静态类型的优点) fun handler(): Flux 变成 fun handler(): Flow FlowFlux在 Coroutines 世界中是等价的

    3.4K30

    Kotlin 1.4 现已发布,专注于质量和性能

    在 Kotlin 1.4.0 中,我们发布了几项正在进行的工作: 更强大的新类型推理算法默认启用。它可以在更多用例中自动推理类型,即使在复杂的场景下也支持智能转换,改进了委托属性的推理,等等。...在此版本中,Kotlin 标准库获得了新集合运算符、委托属性改进以及双端队列实现 ArrayDeque,等等。...特定于 Kotlin/JVM 的语言功能: 我们添加了新的实验方法,用于在字节码的接口中生成默认方法(对于 Java 8 目标)。 我们为null 检查引入了统一的异常类型。...Kotlin现在可以在 JVM 字节码中生成类型注释,以便它们在运行时可以在 Java 反射中使用。该功能适用于目标版本 8 及更高版本,到目前只在实验模式下被发布。...Kotlin/Native 中的当前自动内存管理实现在并发方面存在限制,我们正在努力将其替换。

    2.5K30

    Gradle Kotlin DSL指南

    Kotlin DSL脚本中突出显示Kotlin语法 在Gradle Kotlin DSL脚本中的代码补全,源代码导航,文档,重构等等 正如在限制中提到的,你必须从Gradle模型中导入你的项目,...你在Kotlin DSL脚本中读到的所有东西都是由Gradle编译和执行的Kotlin代码。你在构建脚本中使用的许多对象、函数和属性都来自于Gradle API和应用插件的API。...这包括从设置脚本中应用的脚本插件 根据模式*.init.gradle.kts为初始化脚本命名。或者简单的init.gradle.kts。...这些限制将在未来的Gradle发行版中被移除。 只有主项目构建脚本和预编译的项目脚本插件具有类型安全的模型访问器。初始化脚本,设置脚本,脚本插件不需要。这些限制将在未来的Gradle发行版中被移除。...by extra Copy 在当前上下文中(在本例中是项目)创建一个新的额外属性myNewProperty,并用“initial value”值初始化它,这也决定了属性的类型 创建一个新的额外属性

    13.1K20

    Kotlin 的 IDE 插件 2021.1 发布: 性能的提升以及更好的重构支持

    体验高效的代码补全和高亮 有时候,代码的编写并不像想象中的有趣,特别是在等待 IDE 缓慢的代码高亮和代码补全的过程当中。我们的目标就是让代码高亮和补全丝般顺滑,让开发者不再为此着急上火。...在这次版本更新中,我们发布了一个虽然小但重要的特性,那就是在Variables 视图当中计算自定义属性的值。...在 Kotlin 插件的 2021.1 版本当中,您可以看到所有这样的属性,并且只需要点击属性名后面的 get() 就可以按需计算它们的值。...代码补全可以在泛型函数之后提示函数和属性,并在需要的时候补全泛型参数。当您在提示列表当中选择了这样的一个函数,IDE 会在前面的代码中自动添加相应的泛型参数。...例如在下面的代码中,IDE 自动添加了()类型: 当您应用了 IDE 的提示以后,您将得到以下代码: 使用类图来检查 Kotlin 的代码结构 新版发布以后,您可以使用 UML 类图来检查

    2.6K30

    前端THREE.JS实现DWG图纸的批注和预览

    前言在之前的文档中,我们已对 MxCAD 产品进行了宏观介绍,并完成了开发环境的初步搭建与 Demo 运行。然而,从“运行官方示例”到“构建自有业务系统”之间,仍存在概念理解与工程落地的鸿沟。...通过本文的学习,您将掌握如何根据业务需求(是仅需审阅批注,还是需要修改原图)选择合适的技术组件,并能够独立搭建起一个可运行的 Web CAD 基础框架,为后续开发复杂的在线设计平台奠定坚实基础。...无缝切换:由于二者同源,开发者可以在同一个项目中根据权限或功能模块,动态切换“只读/批注模式”与“编辑模式”,无需更换底层引擎,保证了用户体验的一致性与技术架构的统一性。..."); } else { alert("未找到保存的批注数据"); }};最佳实践提示:在实际业务中,应将 saveMarkup 生成的 JSON 数据通过 AJAX/Fetch 发送给后端,...请确保开发包中的 fonts 目录已完整部署到项目中,或在后端转换服务中配置字体映射。大文件性能对于超过 50MB 的超大图纸,建议在加载前进行前端提示。

    27310
    领券