- 博客(91)
- 问答 (1)
- 收藏
- 关注
原创 26:kotlin 类和对象 -- 委托属性(Delegation properties )
尽管每次需要时都可以手动实现一些常见类型的属性,但将它们实现一次、添加到库中以便以后重用会更为方便为了涵盖这些(以及其他)情况,kotlin支持委托属性(delegated properties)。在by之后的表达式是一个委托,因为与属性对应的get()(和set())将被委托给其getValue()和setValue()方法。属性委托不必实现一个接口,但它们必须提供一个getValue()函数(对于var还需要提供setValue()thisRef${propertynamevalue${
2023-12-07 11:18:23
1761
原创 25:kotlin 类和对象 -- 委托(Delegation )
委托模式已被证明是实现继承的一种良好替代方案,而kotlin对其提供本地支持,无需编写样板代码实现类(Derived)可以将公共成员委托给其他类来实现一个接口(Base)ThebyBaseb。
2023-12-07 08:53:47
631
原创 24:kotlin 类和对象 -- 对象表达式和声明(Object expressions and declarations)
如果需要创建一个稍微修改了某个类的对象,而不需要显式地声明一个新的子类。Kotlin可以通过对象表达式(object expressions)和对象声明(object declarations)来处理这种情况。
2023-12-06 13:40:52
1989
原创 23:kotlin类和对象 -- 内联值类(Inline value classes)
有时,将一个值包装在一个类中可以创建一个更具领域特定类型的类。然而,由于额外的堆分配,这会引入运行时开销。此外,如果包装的类型是原始类型,性能损失是显著的,因为原始类型通常由运行时进行了大量优化,而它们的包装类没有得到任何特殊处理。为了解决这些问题,kotlin引入了一种特殊类型的类,称为内联类(inline class)。内联类是值类()的一个子集。它们没有身份,只能持有值。要声明一个内联类,请在类名之前使用value修饰符要在JVM后端声明一个内联类,可以在类声明之前使用value修饰符以及。
2023-12-06 09:29:13
1002
原创 22:kotlin 类和对象 -- 枚举类(Enum classes)
枚举类最基本的用例是实现类型安全的枚举每个枚举常量都是一个对象。枚举常量以逗号分隔。由于每个枚举都是枚举类的一个实例,因此可以将其初始化为。
2023-12-05 10:34:58
812
原创 21:kotlin 类和对象 -- 嵌套类和内部类(Nested and inner classes)
类可以嵌套在另一个类中类和接口也可以相互嵌套。
2023-12-05 10:34:23
467
原创 19:kotlin 类和对象 -- 密封类和接口(Sealed classes and interfaces )
使用sealed关键字声明一个密封类或者接口密封类和接口能够很好的控制继承,在密封类和接口定义的模块和包外无法被继承在编译期我们就已知了所有的密封类和接口的实现类。在某种意义上,密封类类似于枚举类:枚举类型的值集也是受限制的,但枚举常量只存在为单个实例,而密封类的子类可以有多个实例,每个实例都有自己的状态。举例来说,有个公共方法模块,定义了一个顶级错误密封类Error,只要是模块中捕获了Error的子类异常,就证明是当前模块抛出的错误,可以根据子类类型分别作出不同的处理。
2023-12-04 08:38:47
528
原创 18:kotlin 类和对象 -- 数据类(Data classes)
数据类是其主要目的是保存数据的类。数据类会自动附带额外的成员方法使用data声明一个数据类编译器会自动从中声明的所有属性派生以下成员.equals()(在后边的文章会讲到).copy()为了确保生成的代码的一致性和有意义的行为,数据类必须满足以下要求valvar.equals()openfinal.copy()在JVM上如果需要一个无参构造函数,需要给主构造函数的参数指定默认值。
2023-12-01 09:40:30
1104
原创 17:kotlin 类和对象 -- 扩展(Extensions )
扩展是kotlin提供了一种在不必继承自类或使用装饰器等设计模式的情况下,为类或接口添加新功能的能力。例如,你可以为无法修改的来自第三方库的类或接口编写新函数。这些函数可以像原始类的方法一样被通常调用。这种机制称为扩展方法。还有扩展属性,允许你为现有的类定义新的属性。
2023-12-01 09:40:06
1569
原创 16:kotlin类和对象 -- 可见性修饰符(Visibility modifiers)
类(Classes)、对象(objects)、接口(interfaces)、构造函数(constructors)和方法(functions),以及属性(properties )及其setters,都可以有可见性修饰符。Getter的可见性始终与它们所属的属性相同。private(私有)、protected(受保护的)、internal(内部的)和public(公共的)。默认可见性是public(公共的)。
2023-11-30 08:44:46
600
原创 15:kotlin 类和对象 -- 函数式接口(Functional (SAM) interfaces)
只有一个抽象方法的接口被称为函数接口,或者称为单一抽象方法(SAM)接口。函数接口可以有多个非抽象成员,但只能有一个抽象成员。
2023-11-30 08:44:20
730
1
原创 14:kotlin类和对象 -- 接口(Interfaces)
接口可以包含抽象方法和普通方法。与抽象类的不同之处在于接口不能存储状态。它们可以拥有属性,但这些属性需要是抽象的或定义访问器使用关键字interface来定义接口。
2023-11-29 13:26:58
684
原创 12:kotlin类和对象 -- 继承
kotlin中的所有类都有一个共同的超类equals()hashCode()和toString()。默认情况下,kotlin类是final修饰的,所以它们不能被继承。要使一个类可继承,用open关键字修饰继承一个类如果实现类有主构造函数,则必须在该主构造函数中根据其参数初始化基类。如果实现类没有主构造函数,则每个次构造函数都必须使用super关键字初始化父类型,或者它必须委托给另一个构造函数来执行。请注意,在这种情况下,不同的次构造函数可以调用父类的不同构造函数。
2023-11-28 15:01:04
775
原创 11:kotlin 类和对象 -- 普通类
前面粗咯的讲了类,这篇详细介绍类及相关的概念定义类使用关键字类声明由(指定其类型参数、主构造函数等)和由{}包围的组成。类头和类体都是可选的;如果类没有体,可以省略。
2023-11-28 13:21:05
1263
原创 10:kotlin 异常(Exceptions )
所有的异常类都继承自Throwable类抛出异常使用throw表达式捕获一个异常使用表达式可以有零个或多个catch块,finally可以省略。然而,至少需要一个catch或finally。
2023-11-27 11:12:12
798
原创 9:kotlin 返回和跳过(Returns and jumps)
kotlinreturn会从最近的封闭函数或匿名函数返回。break终止最近的封闭循环。continue继续最近的封闭循环的下一步。所有这些表达式都可以作为其他表达式的一本分使用这行代码的意思是尝试从person对象中获取name属性的值,并将其赋值给变量s。如果存在,那么它的值就会被赋值给s。但是,如果为null,那么return语句会被执行,当前函数会立即返回,不再执行后续的代码。这是Elvis操作符?的一个常见用法。
2023-11-27 11:11:46
701
原创 8:kotlin 类型检查和转换(Type checks and casts)
is!is在运行时可以执行类型检查以检查对象的类型。类型转换将对象强制转换为不同的类型is。
2023-11-24 11:22:24
1481
原创 7:kotlin 数组 (Arrays)
数组是一种数据结构,它保存固定数量的相同类型或其子类型的值。kotlin中最常见的数组类型是对象类型数组,数组由array类表示。
2023-11-24 10:38:15
1919
原创 6:kotlin 空值安全(Null safety)
在Kotlin中,是可以有空值的。为了防止程序中出现空值问题,Kotlin实施了空值安全。空值安全在编译时而不是运行时检测到可能的空值问题。
2023-11-23 15:09:32
279
翻译 1:kotlin基本数据类型
kotlin中有以下基本数据类型ByteShortIntLongUByteUShortUIntULongFloatDoubleBooleanCharString。
2023-11-21 09:24:06
269
原创 使用Systemctl启动nginx失败,端口权限不足问题解决方案
使用nginx直接启动成功,使用systemctl启动nginx服务时报错。
2023-09-27 14:04:27
1257
原创 用二进制位运算表示数据的多种状态
使用二进制设置状态看的是数字的二进制内容,并不是看的十进制内容(除非你已经🐮🍺到看见数字立马能翻译成相应的二进制)代码实现的.其他语言同理。
2023-08-15 13:45:55
503
原创 SpringBoot2.2.5升级到2.7.7 SpringCloudHoxton.SR10升级到2021.0.5 SpringCloudAlibaba2.2.1.RELEASE升级到2021.0.4
需要手动添加·spring-cloud-starter-loadblancer`依赖。Gateway报错Unable to find instance for xxx。中引入的该依赖,在高版本中(具体哪个版本未知)中将其排除了。之前会自动类解决循环依赖问题,升级之后只能手动解决。版本配置文件不兼容会导致该问题,需要根据。注解,如果一个项目中有多个该注解会报错。A类引用了B类,B类引用了A类。会和JDK版本有冲突导致该问题,版本后,加载方式发生改。等注解时,可能会报错。针对该问题进行了重构。
2023-01-19 16:48:56
1829
4
原创 项目升级SpringBoot版本后,OpenFeign报错bean ‘xxx.FeignClientSpecification‘ could not be registered
个人猜测是两个注解加载了两遍?生成了两个相同实体?又以为是什么版本冲突的原因。就开始逐个依赖排除,查找问题原因。属性失效了,去官网看并没有失效,网上搜了半天没找到相似问题。,为了以短时间内不用考虑升级的问题,想直接升级成。升级过程中报标题上的错误,不论我怎么修改。
2023-01-17 13:08:27
722
空空如也
reactor类型转换错误
2023-03-16
springboot多项目依赖注入失败问题
2021-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人