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

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

文章目录 一、Kotlin 的空安全机制 二、变量可空性 1、默认变量不可赋空值 2、声明可空类型变量 一、Kotlin 的空安全机制 ---- Java 中的空指针问题 : 在 Java 语言...Kotlin 程序的 代码健壮性 ; 二、变量可空性 ---- 1、默认变量不可赋空值 在 Java 中 , 引用类型的变量 默认为 null 空值 ; 但是在 Kotlin 中 , 变量默认不可为...赋值一个空值 , 除非 将该变量声明为 可空类型 ; 2、声明可空类型变量 声明可空类型变量 : 如果要声明一个 可空类型的变量 , 必须 声明该变量的具体的类型 , 并在该类型后添加 ?...可空类型 , 此时就可以为 该变量 赋值 null 值 ; fun main() { var name: String?...可空类型声明后 , 在 IntelliJ IDEA 中 , 就不再进行报错了 ;

1.9K20

【收藏篇】Java关键字 及其 更详细介绍

由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。 Java 浮点数值可代表无穷大和 NaN(非数值)。...Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。 9) null 空 null 是 Java 的保留字,表示无值。...byte byte是Java原始类型。 byte可存储在[-128,127]范围以内的整数值。 -示例- byteb=124; -注释- Byte类是byte原始类型的包装对象类。...要指定单精度文字值,应在数值后加上f或F,如0.01f。 由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。 Java浮点数值可代表无穷大和NaN(非数值)。...引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。

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

    【译】尝试使用Nullable Reference Types

    意味着“任何可以为空的类型”。同时这意味着这T将意味着“任何非可空类型”,这不是真的!今天可以用可空值类型替换T (例如bool?)。这是因为T已经是一个不受约束的泛型类型。...语义的这种变化可能是意料之外的,并且对于T用作无约束泛型类型的大量现有代码而言会引起一些悲痛。 其次,有一点非常重要就是,要注意可空引用类型和可空值类型是不一样的。...(bool)表示即使类型允许,参数也不能为空,条件是该方法的bool返回值。...MaybeNullWhen(bool)表示即使类型不允许参数为空,参数也可以为空,条件也是该方法的bool返回值。它们可以在任何参数类型上指定。...尽管仍有约80%的corefx需要注释,但大多数使用的API都是完全注释的。 空引用类型的路线图 当前,我们将完全可以为空的引用类型体验视为处于预览状态。

    3.8K10

    C语言编程规范 clean code

    ,带括号宏中的参数。...规则2.3 函数声明、定义的返回类型和函数名在同一行;函数参数列表换行时应合理对齐 在声明和定义函数的时候,函数的返回值类型应该和函数名在同一行。...选择"*"跟随类型风格时,避免一行同时声明带指针的多个变量。 int* a, b; // Bad: 很容易将 b 误理解成指针 选择"*"跟随变量风格时,可能会存在无法紧跟的情况。...按注释的目的和位置,注释可分为不同的类型,如文件头注释、函数头注释、代码注释等等; 同一类型的注释应该保持统一的风格。...不要写无用、信息冗余的函数头;不要写空有格式的函数头。 函数头注释内容可选,但不限于:功能说明、返回值,性能约束、用法、内存约定、算法实现、可重入的要求等等。

    5.7K10

    C语言编程规范 clean code

    ,带括号宏中的参数。...规则2.3 函数声明、定义的返回类型和函数名在同一行;函数参数列表换行时应合理对齐 在声明和定义函数的时候,函数的返回值类型应该和函数名在同一行。...选择"*"跟随类型风格时,避免一行同时声明带指针的多个变量。 int* a, b; // Bad: 很容易将 b 误理解成指针 选择"*"跟随变量风格时,可能会存在无法紧跟的情况。...按注释的目的和位置,注释可分为不同的类型,如文件头注释、函数头注释、代码注释等等; 同一类型的注释应该保持统一的风格。...不要写无用、信息冗余的函数头;不要写空有格式的函数头。 函数头注释内容可选,但不限于:功能说明、返回值,性能约束、用法、内存约定、算法实现、可重入的要求等等。

    4.5K10

    SqlAlchemy 2.0 中文文档(三十一)

    如果字典为空,则引发 KeyError。 method setdefault(*arg) 如果字典中没有键,则将键插入并将其值设置为默认值。 如果字典中存在键,则返回键的值,否则返回默认值。...如果列表为空或索引超出范围,则引发 IndexError。 method remove(i: _T) → None 移除第一次出现的值。 如果值不存在,则引发 ValueError。...如果字典为空,则引发 KeyError。 method setdefault(*arg) 如果键不在字典中,则将键插入并设置默认值。 如果键在字典中,则返回键的值,否则返回默认值。...如果列表为空或索引超出范围,则引发 IndexError。 method remove(i: _T) → None 删除值的第一个出现。 如果值不存在,则引发 ValueError。...如果列表为空或索引超出范围,则引发 IndexError。 method remove(i: _T) → None 删除值的第一个出现。 如果值不存在,则引发 ValueError。

    44520

    【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )

    文章目录 一、Kotlin 的空安全机制 二、变量可空性 1、默认变量不可赋空值 2、声明可空类型变量 三、手动空安全管理 四、空安全调用操作符 ?...String 这是因为 var name 变量 默认为非空的 , 在 Kotlin 中 不允许将 默认变量 赋值一个空值 , 除非 将该变量声明为 可空类型 ; 2、声明可空类型变量 声明可空类型变量...: 如果要声明一个 可空类型的变量 , 必须 声明该变量的具体的类型 , 并在该类型后添加 ?...可空类型声明后 , 在 IntelliJ IDEA 中 , 就不再进行报错了 ; 三、手动空安全管理 ---- Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下 ,..., 将变量 name 声明为了 可空类型 String?

    1.8K10

    Python3 | 练气期,捕获错误异常 、自定义异常处理!

    如果 finally 子句中包含 return 语句,则返回值来自 finally 子句的某个 return 语句的返回值,而不是来自 try 子句的 return 语句的返回值(特别注意)。...# ExceptionGroup -> There were RecursionError. 3.1 异常注释 在一个异常被创建以引发时,它通常被初始化为描述所发生错误的信息,此时我们可以使用...BaseException 异常类型中的 add_note(note) 方法, 以便在异常实例中附加相信额外的信息,并将其添加到异常的注释列表。...├── TypeError # 当一个操作或函数被应用于类型不适当的对象时将被引发。...├── ValueError # 当操作或函数接收到具有正确类型但值不适合的参数,并且情况不能用更精确的异常例如 IndexError 来描述时将被引发。

    12410

    Java之Java关键字及其作用

    4) throws 声明一个异常可能被抛出 throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常。...引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。...由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。 Java 浮点数值可代表无穷大和 NaN(非数值)。...Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。 9) null 空 null 是 Java 的保留字,表示无值。...引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。

    82410

    Rust流程控制

    除了以下几种语法: 变量声明 模块声明 函数声明 结构体声明 枚举声明 … 你可能会奇怪为什么 if…else… 不在上面的列表中,事实上,在 Rust 中,条件与循环并不是语句,而是表达式,这意味着它可以有返回值...---- 使用while循环 while 是带循环条件的 loop。当条件为假时,结束循环。我们使用一个例子介绍 while 的语法。...("It's A"); letter = Alphabet::B; } } ---- 函数与方法 函数 函数的定义以 fn 开始,它的参数是带类型注释的,就像变量一样,如果函数返回值...("{}", calc("sub")(20, 10)); } ---- 发散函数 发散函数永远不会被返回,它们的返回值被标记为 !,这是一个空类型。 fn foo() -> !...("This call never returns."); } 发散函数与空返回值函数不同,空返回值函数可以被返回: fn some_fn() { () } fn main() { let

    56410

    可空类型及其衍生运算符

    这节讲一下C#可空类型(Nullable) 我们知道,值类型在使用前必须设置值,而引用类型则可以是null,但在某些情况下,为值类型设置为空是必要的(如处理数据库数据的时候),微软因此推出了可空类型...在声明和使用中,以下两种情况是不允许的: 以下情况则可以(了解VS的同学会知道,类型颜色变灰说明此处可以简化,这就涉及到它的一个衍生运算符,我们后边讲): 可空类型,可以像引用类型一样...可空类型很有用,为此微软新添了一批语法,声明可空类型,可以使用一下语法: T?...运算符 为了避免可空类型或者引用类型在空引用时引发的NullReferenceException异常,微软又引入了 ?....空条件运算符,请看代码(举个稍微不恰当的例子): 有一 Person 类,我们可能获取到空的数据对象(此处直接赋值为空),后续直接调用其方法就会引发异常, 下面改用空条件运算符,程序正常运行

    40820

    几个提升Go语言开发效率的小技巧

    中的空值,默认输出字段的类型零值(string类型零值是"",对象类型的零值是nil...)...运行结果: str:{"name":"asong","Age":0} Age字段我们没有添加omitempty tag在json序列化结果就是带空值的,email字段就被忽略掉了; 短变量声明 每次使用变量时都要先进行函数声明...我们可以使用 name := expression 的语法形式来声明和初始化局部变量,相比于使用var声明的方式可以减少声明的步骤: var a int = 10 等用于 a := 10 使用短变量声明时有两个注释事项...(T) x是interface类型,T是具体的类型,方式一是安全的断言,方式二断言失败会触发panic;这里类型断言需要区分x的类型,如果x是空接口类型: 空接口类型断言实质是将eface中_type...如果x是非空接口类型: 非空接口类型断言的实质是 iface 中 *itab 的对比。*itab 匹配成功会在内存中组装返回值。匹配失败直接清空寄存器,返回默认值。

    91230

    Spring JPA 定义查询方法

    USE_DECLARED_QUERY尝试查找已声明的查询,如果找不到则引发异常。查询可以通过某个地方的注释进行定义,或通过其他方式进行声明。请参阅特定存储库方法的文档,以找到该存储库内的可用方法。...空值注解 您可以使用Spring Framework的可空性注释来表示存储库方法的可空性约束。...它们提供了一种工具友好的方法,并在运行时选择空检查,如下所示: @NonNullApi:在包级别上使用,用于声明参数和返回值的默认行为是不接受或生成空值。...例20:在包级别上声明非空 @org.springframework.lang.NonNullApi package com.acme; ​ 一旦设置了非空默认值,存储库查询方法调用将在运行时验证是否存在可空性约束...如果查询执行结果违反定义的约束,则抛出异常。当方法将返回null,但声明为不可空时(存储库所在的包上定义的注释的默认值),就会发生这种情况。

    2.2K10

    DDD Command模型

    为了让Axon找到这些带注释的方法,在聚合根中声明实体的字段必须用@AggregateMember标记。...请注意,注释@AggregateMember的字段会被用于对CommandHandlers的查找。 如果传入命令时该字段值为空,则会引发异常。...这意味着你不能使用@CommandHandler注解多个实体(无论是否聚合根)处理相同的命令类型。如果您需要有条件地将命令路由到实体,则这些实体的父级应处理该命令,并根据所应用的条件转发该命令。...该字段的运行时类型不必完全是声明的类型。 但是,只有@AggregateMember所注释字段的声明类型才被用于查找其内部的@CommandHandler方法。      ...如果无法在声明中添加泛型(例如因为您正在使用已定义泛型类型的自定义实现),则必须在@AggregateMember注释中指定entityType属性中使用的实体类型。

    2.6K30

    【Java学习笔记之一】java关键字及作用

    如果方法具有非 void 的返回类型,return 语句必须具有相同或兼容类型的参数。  返回值两侧的括号是可选的。 4) do 运行 do 关键字用于指定一个在每次迭代结束时检查其条件的循环。 ...4) throws 声明一个异常可能被抛出 throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常。 ...引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。 ...由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。  Java 浮点数值可代表无穷大和 NaN(非数值)。...Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。 9) null 空 null 是 Java 的保留字,表示无值。

    1K81

    干货 | 学编程一定要掌握的186个关键单词及作用!

    14数组类型(array type): 这种数据类型的值是数组。比如类型的名字为 Type,那么 Type[] 就是数组类型,基类型为 Type。...对象所属的类决定了对象包含的类和方法。 118对象类型(object type): 这种类型的值是对象而非基础类型。 类和接口都是对象类型。...在Java中,类型可以是基本类型、类名或接口名。 类型名可用来定义变量的类型,子程序中的虚拟参数和子程序的返回类型。 181类型转换(type cast): 把一种类型的值强制转换为另一种类型。...14数组类型(array type): 这种数据类型的值是数组。比如类型的名字为 Type,那么 Type[] 就是数组类型,基类型为 Type。...对象所属的类决定了对象包含的类和方法。 118对象类型(object type): 这种类型的值是对象而非基础类型。 类和接口都是对象类型。

    1.2K90

    TypeScript 3.9正式发布!平均编译时长从26秒缩短至10秒

    有些朋友可能对 TypeScript 还不太熟悉,这是一种以 JavaScript 为基础开发的语言,新增 type 声明与注释等多种语法。...Inference 与 Promise.all 迎来改进 TypeScript 的最近几个版本(3.7 及之后)已经对 Promise.all 及 Promise.race 等函数的声明做出更新。...我们在这方面进行了深入研究,并提交多项 pull 请求以优化涉及大型联合、交集点、条件 type 以及映射 type 的性能问题。...您的项目规模合理,团队工作态度积极主动,希望在受影响代码恢复正常之后马上删除抑制注释。 如果符合以下条件,请选择 ts-ignore : 您的项目规模很大大,而且在缺少明确归属的代码中出现了新错误。...这意味着以上代码现在将提示以下错误: Property 'kind' does not exist on type 'never'. 通过观察,我们发现大多数中断都由 type 声明中的瑕疵引发。

    1.7K20
    领券