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

kotlin数据类重写setter getter正确方法

前言 kotlin数据类,由于其内部封装了gettersetter方法,极大地简化了我们编程代码,但同时其不能像java那样方便重写getter或者setter方法,也给大家造成了一定麻烦。...举个例子: data class OrderBean(val createTime: Long) 后端返回订单数据,createTime这个字段是长整型时间戳,但是前端需要转成yyyy-MM-dd...这种格式,或者yyyy年MM月dd日这种,再或者更加友好一点,根据时间段,转成1小时前、2天前、一周前这种,在实际开发中都是常有的情况,在Java我们可以很方便getter方法做这些处理,但是kotlin...getter方法都是内部封装,并不直接支持重写,我看到网上有些答案是像这样处理: data class OrderBean(val _createTime: Long){ val createTime...正确姿势 有以下三种,你可以根据自己业务逻辑和团队的话语权进行选择: 让后端改:如果有可能的话,这是最合理,最恰当方式,后端直接返回我们需要字段形式,节省了移动端,web端,小程序端等每端各写一套逻辑时间

3.7K10

js对象属性gettersetter

ES5gettersetter方法,通过 Object.defineProperty 把实例属性全部转为 getter/setter。...故温故一遍gettersetter定义属性方法。 通过对象字面量定义get和set方法 有个注意地方,get与set函数体都不能再定义本身该属性,否则执行时候会陷入死循环,抛出栈溢出。...在对象字面量,同一个属性不能有两个get,也不能既有get又有属性键值(不允许使用 { get x() { }, get x() { } } 和 { x: …, get x() { } } ) 在同一个对象...但是如果定义了set或者get方法任何一个,就不能再设置writable,即便false也不可以 var o = { a:0 } Object.defineProperty(o, "b", { get...,它可以被压缩成为三个步骤: 1.我们需要一个方法来识别哪个UI元素被绑定了相应属性 2.我们需要监视属性和UI元素变化 3.我们需要将所有变化传播到绑定对象和元素 方法一:利用发布订阅模式,

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

盘点JavaScriptgetter()和setter()函数使用

它们本质是用于获取和设置值函数,但从外部代码来看就像常规属性。 二、Gettersetter 访问器属性由 “getter” 和 “setter” 方法表示。...在对象字面量,它们用 get和 set表示: let obj = { get propName() { // 当读取 obj.propName 时,getter 起作用 }, set...四、更聪明 getter/setter Getter/setter 可以用作“真实”属性值包装器,以便对它们进行更多控制。...例: 如果想禁止太短 user name,可以创建一个 setter name,并将值存储在一个单独属性 _name: let user = { get name() { return...五、兼容性 访问器一大用途是,它们允许随时通过使用 gettersetter 替换“正常”数据属性,来控制和调整这些属性行为。

1.5K11

Kotlin】类初始化 ① ( 成员属性 | Kotlin 自动为成员字段生成 gettersetter 方法 | 手动设置成员 gettersetter 方法 | 计算属性 )

文章目录 一、Kotlin 自动为成员字段生成 gettersetter 方法 二、手动设置成员 gettersetter 方法 三、计算属性 一、Kotlin 自动为成员字段生成 getter...和 setter 方法 ---- 定义 Kotlin 类 , 在 类 定义成员属性 , 会自动生成 gettersetter 方法 ; 在 Kotlin 定义如下类 , 在其中定义两个字段...结果 如下 : 二、手动设置成员 gettersetter 方法 ---- Kotlin 会为 类每个 成员属性 生成一个 field , getter , setter ; field...用于存储 属性数据 , 是由 Kotlin 自动进行定义封装 , 只有在 gettersetter 函数才能调用 field ; 手动定义 gettersetter 方法示例 : class...类 某个属性 是 通过计算得到 , 可以 在该属性 gettersetter 方法中进行计算设置或获取结果 , 不使用 field 属性 ; 下面的 age 属性就是通过计算得到属性值

1.5K20

Kotlin Android】一个列表带你领略Kotlin简洁之风

我对于Kotlin一开始也是没有多大兴趣,对函数式编程也是有一定排斥,总感觉代码可读性和可维护性似乎大大下降,事实只是对这编程思想没有一个很好转变而已。...Kotlin 类声明、定义、继承 Kotlin同样使用class来声明类,类继承符号为一个冒号“:”,基类需要在类名后面带上一对括号,如果基类构造函数带有参数,此时需要在括号填写对应参数。...还记得代码中大量settergetter吗?在Kotlin世界里,这些通通被抹杀在摇篮里。...在Java,如果想要配置LayoutManager,需要调用listViewsetLayoutManager()方法,在Kotlin,我们只需直接将LayoutManager赋值给layoutManager...当然Kotlin还有更多知识和更多使代码更简洁技巧,如lambda表达式,对象表达式,函数扩展和对象委托等更高级功能,这里就不在介绍。

1.8K10

Getting started with Kotlin on Android

Getter/Setter可以使Java成员既有封装性,又能对外暴露很多接口。 还有很多其它方法,比如toString、hashCode和equals。 ? ? Singleton ?...Extensions 在Java,要想扩展一个类,我们会写一堆Utils。 而在Kotlin,我们可以直接对double对象进行扩展,再也不需要Utils类了。...Delegated properties 对于一个property,可以把它Delegated一个对象,每当读写property时候,它都会调用对应函数。...Coroutines提高了异步代码可读性。 Kotlin in Android 在Android上有一个常见类叫做viewholder。 ?...Kotlin在Android可以自动把view找出来,不需要手写代码。 Kotlin's Reference 引入Kotlin ? 已知问题 Kotlin与mockito兼容性。

70750

Kotlin京东业务实战 | 强大又简洁JVM语言

2011年JetBrains推出Kotlin项目,这是一个面向JVM新语言,主要是解决Java之前被诟病已久问题,而且积极借鉴了 Scala、Ruby等新语言在开发效率和简洁性优势。...默认kotlin中所有的对象都是不为Null。...>>>> 数据类 在Java,如果想要创建数据类或是POJO类(只保存了一些状态类),我们需要创建一个拥有大量字段、getters与setters类,也许还要提供toString与equals方法...Kotlin编译器在目标代码生成环节做了很多类似于Java封装事情,比如自动生成Getter/Setter代码生成、Companion转变成静态类、修改类属性为final不可继承(open修饰即可继承...Kotlin在设计避免了常见编程错误,从而减少了应用程序崩溃和系统故障。此外,由于Kotlin 是快速失败机制,可以立即报告任何可能导致失败问题。

1.6K00

Kotlin对象表达式和对象声明具体使用

Kotlin对象表达式与Java匿名内部类主要区别:匿名内部类只能指定一个父类型,但对象表达式可以指定0~N个肤类型。...因此不允许将对象表达式定义成抽象类。 对象表达式不能定义构造器。但对象表达式可以定义初始化块,可以通过初始化块来完成构造器需要完成事情。 对象表达式可以包含内部类,不能包含嵌套类。...,区别在于:对象表达式在object关键字后没有名字;而对象声明需要在object关键字后指定名字。...对象声明不能定义在函数和方法内;但对象表达式可嵌套在其他对象声明或非内部类。...三、伴生对象和静态成员 在类定义对象声明,可使用companion修饰,这样该对象就变成了伴生对象

1.1K31

Kotlin Vocabulary | Kotlin 委托代理

基本,实现此用例您所需要就是一个同样功能 ArrayList,以及对最后移除项目的引用。 实现这个用例一种方式,是继承 ArrayList 类。...这一特性在您需要在其他对象间复用 getter/setter 逻辑时十分有用,同时也能让您可以轻松地对简单支持字段功能进行扩展。...如果您只需要委托 getter,那么代理类需要实现 ReadProperty;而如果 gettersetter 都要委托,则代理类需要实现 ReadWriteProperty。...在我们例子,FormatDelegate 需要实现 ReadWriteProperty,因为您想在调用 setter 时执行格式化操作。...Kotlin 编译器会为 name 和 lastname 属性生成持有 FormatDelegate 对象私有引用代码,以及包含您所添加逻辑 gettersetter

1.9K20

Kotlin Vocabulary | Kotlin 委托代理

基本,实现此用例您所需要就是一个同样功能 ArrayList,以及对最后移除项目的引用。 实现这个用例一种方式,是继承 ArrayList 类。...这一特性在您需要在其他对象间复用 getter/setter 逻辑时十分有用,同时也能让您可以轻松地对简单支持字段功能进行扩展。...在我们例子,FormatDelegate 需要实现 ReadWriteProperty,因为您想在调用 setter 时执行格式化操作。 <!...Kotlin 编译器会为 name 和 lastname 属性生成持有 FormatDelegate 对象私有引用代码,以及包含您所添加逻辑 gettersetter。...内部实现Kotlin 编译器会生成支持代理所需所有代码,而不会暴露任何公共 API 修改。

15730

Kotlin互操作——Kotlin与Java互相调用

: ① 属性读写 Kotlin可以自动识别Javagetter/setter;在Java可以过getter/setter操作Kotlin属性。...【例2】自动识别Javagetter/setter。...Java任何引用都可能是null,这使得Kotlin对来自Java对象进行严格空安全检查是不现实。Java声明类型在Kotlin称为平台类型,并会被特别对待。...④ 静态方法 Kotlin将包级函数表示为静态方法。如果对这些函数使用@JvmStatic进行标注,那么Kotlin还可以为在命名对象或伴生对象定义函数生成静态方法。...();//没问题,通过单例实例调用 Obj.INSTANCE.foo();// 也没问题 @JvmStatic注解也可以被应用于对象或伴生对象属性,使其gettersetter方法在该对象或包含该伴生对象是静态成员

3.7K10

Kotlin Property Delegate 与 Swift Property Wrapper

请大家留意我们获取属性代理对象方式,这在 Kotlin 当中需要用到反射;后面我们会看到, Swift 则直接提供了更好语法来支持这样功能。...其实对于 setter 代理场景还真有,例如对于 Android 某些 View 属性只有 setter 方法,没有对应 getter,如果我想要做一个属性动画,那么这样属性代理就会比较有帮助...wrapped::x.delegator(),它作用就是提供了属性 gettersetter,这样我们将 Binding 对象传给 Toggle 时候,它就可以在其中方便修改...则是返回一个包装了被 State 包装属性 gettersetter 对象: [Swift] @frozen @propertyWrapper public struct State<Value...Kotlin 属性代理语法结构没有类型强制约束,只要实现 getValue 和 setValue 这两个方法即可用作属性代理对象;不过,获取一个属性代理对象方式不是特别友好,一方面需要使用到反射

5.2K20

Java 8Optional 类型与 Kotlin 可空类型Java 8Optional 类型与 Kotlin 可空类型Kotlin 可空类型《Kotlin极简教程》正式架:

Java 8Optional 类型与 Kotlin 可空类型 在 Java 8,我们可以使用 Optional 类型来表达可空类型。...toUpperCase(); Swift 也有类似的语法, 只作用在 Optional 类型。...Kotlin 可空类型 上面 Java 8例子,用 Kotlin 来写就显得更加简单优雅了: package com.easy.kotlin fun main(args: Array<String...还有Java 8 Optional 提供orElse s.orElse("").length(); 这个东东,在 Kotlin 是最最常见不过 Elvis 运算符了: s?.length ?...: 0 相比之下,还有什么理由继续用 Java 8 Optional 呢? Kotlin 明星符号 ?????????????????????????????????????? ?: ?: ?

2.6K10

快速上手 Kotlin 11 招

如何实例化类 Java 和 C++ 这样语言,在构造对象时候经常需要用到 new 这个关键字,比如: Date date = new Date(); Kotlin 构造对象时,不需要 new...如何写 GetterSetter 方法 Java GetterSetter 是一种约定俗称,而不是语法特性,所以定义起来相对自由: public class GetterAndSetter...get() = field } 注意看到,我们为 x 显式定义了 gettersetter,field 是 x 背后真正变量,所以 setter 当中其实就是为 field 赋值,而 getter...如果你想要对 x 访问做控制,那么你就可以通过自定义 gettersetter 来实现了: class KotlinGetterAndSetter{ var x: Int = 0...代码看上去确实很奇怪,实际 Hello::class 拿到Kotlin KClass,这个是 Kotlin 类型,如果想要拿到 Java Class 实例,那么就需要前面的办法了。

1.5K20

用一个属性代理另一个对象属性

最近好忙呀,上周因为上周末加班都没顾写文章。 好在昨天活动见到了膜拜已久冰冰,很好很强大。 今天来分享给大家一个属性代理例子。总是有人问我属性代理有什么用,这个也许可以为你提供些思路。... gettersetter,所以我们在使用时就可以把文章开头代码改写为: class Wrapper { private val wrapped: Wrapped = Wrapped...毕竟它是一个属性,通过一个属性我们似乎就可以把它 setter 直接拿到,而不需要显式传入了。...,不过我再提一句,这个例子需要引入包是这样: import kotlin.jvm.internal.PropertyReference import kotlin.reflect.* 如果对于反射以及属性及函数引用这样概念和知识点不是很了解...大家如果有兴趣,也可以在 gradle 引入: compile 'com.bennyhuo.kotlin:opd:1.0-rc' 最后再说一句,估计雀雀又要吐槽我了,这也是没有办法事儿,哈哈。

84620

KotlinKotlin 与 Java 互操作 ② ( @JvmField 注解字段给 Java | @JvmOverloads 注解修饰函数 | @JvmStatic 注解声明静态成员 )

Kotlin 字段给 Java ---- 1、Java 类通过 GetterSetter 方法访问 Kotlin 字段 在 Java 是 不能直接访问 Kotlin 字段 , 必须...调用相应 GetterSetter 方法 , 才能进行访问 ; 代码示例 : Kotlin 类 : 在 Kotlin 声明成员属性 , 默认就是 private 私有属性 , 默认为其生成了...字段声明为 Java 字段 , 此时 Kotlin 不会为该字段自动生成 GetterSetter 方法 ; 二、使用 @JvmOverloads 注解修饰 Kotlin 函数 ----... , 没有静态成员概念 , 需要声明静态成员时 , 一般都在其 Companion 伴生对象声明 ; 在 Java 调用 Kotlin Companion 伴生对象 成员时 , 需要通过如下形式进行调用...1、Java 正常访问 Kotlin 伴生对象成员 在下面的代码 , 在 Java 语言中访问 Kotlin 伴生对象成员 , 需要先获取 Hello.Companion 类伴生对象 , 然后再访问

93330

Java 8之后那些新特性(六):记录类 Record Class

比如服务间数据交互,REST API承载对象等,它可能只是技术单纯用来做 数据交互或承担数据传输任务,这样其实并不需要太多方法。...,但它们基本都代表一个含义,就是 类只包含基本属性与getter,setter方法,不存在业务方法,主要是做为数据传输载体类 这一类,我把它统称为数据类 而在过往,Java定义这样数据类基本是这样...数据类基本属性 2. 属性getter,setter方法 3. 类hashCode,equals以及toString方法 你一定有编写过类似Java类经历,这些类编写实质非常啰嗦。...Kotlindata class 还是来参考下友军是怎么做吧。Kotlin这门语言,号称better java,确实是事实。在Kotlin语言中,语言设计就完全避开了这一点。...当你定义一个data class时,编译器会自动帮你 • 生成hasCode以及equals方法 • toString方法 而getter,setter方法在Kotlin本来就是默认不需要显式定义

2.3K30

Java 反射 VS Kotlin 反射

> clazz = obj.getClass(); Kotlin 获取 Class 对象方式 调用类是 Java 类,需要添加 .java 后缀( KClass 扩展属性 java) val clazz...Kotlin 引用类有两种方式:类名::class和对象::class,它们获取都是相同 KClass 实例。 即处于同一个类加载器,给定类型只能返回一个 KClass 实例。...public Method[] getDeclaredMethods() // 如果此 Class 对象表示某一方法一个本地或匿名类,则返回 Method 对象,它表示底层类立即封闭方法。...Java 反射与 Kotlin 反射互操作性 为一个 Kotlin 属性获取一个 Java getter/setter 方法或者幕后字段,需要使用 kotlin.reflect.jvm 包。...幕后字段 (backing field) 是 Kotlin 属性自动生成字段,它只能在当前属性访问器(gettersetter)内部使用。

2.5K30
领券