问题标签 [data-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4095 浏览

kotlin - Kotlin 数据类中可变集合的防御性副本

我想要一个接受只读列表的数据类:

但它也可以接受MutableList,因为它是List.

例如以下代码修改传入的列表:

有没有办法在数据类中执行传入列表的防御性副本?

0 投票
1 回答
634 浏览

java - 如何将 Java 类转换为 Kotlin 数据类

我使用 Android Studio 的 Kotlin 插件将我的 Java 类转换为 Kotlin。问题是它仍然不是 Kotlin 风格。我想改用 Kotlin 数据类。但是,每当我使用主要和次要构造函数创建它时,它都不起作用。在我的情况下,正确的 DATA 类实现是什么?

0 投票
1 回答
362 浏览

kotlin - 即使我实现了所有的 hashCode()、equals() 和 toString(),我是否应该使用数据类?

我有一个类是字符串的解析结果,因此我必须强制 toString() 返回该源字符串而不是那些已解析的值。它还具有自定义的 equals()/hashCode() 机制。仍然将其标记为数据类有什么好处吗?

0 投票
1 回答
9216 浏览

inheritance - How to let a data class implements Interface / extends Superclass properties in Kotlin?

I have several data classes which include a var id: Int? field. I want to express this in an interface or superclass, and have data classes extending that and setting this id when they are constructed. However, if I try this:

It complains I'm overriding the id field, which I am haha..

Q: How can I let the data class A in this case to take an id when it's constructed, and set that id declared in the interface or superclass?

0 投票
1 回答
2457 浏览

kotlin - 如何更新实现通用接口的数据类

我正在为数据类和多态性而苦苦挣扎。我想从不变性中受益,但仍然能够更新我的状态。为此,我希望能够使用该copy功能。

让我们举个例子。我有这个类层次结构:

现在我希望能够做这样的事情(但这不起作用):

如何以多态方式创建更新的副本?

我试图给接口一个copy函数,但如果子类型有额外的属性,它们不会覆盖复制函数。
这很令人沮丧,因为我知道子类型具有该属性,但我无法在界面中利用该知识。

0 投票
2 回答
191 浏览

kotlin - Kotlin 数据类从哪里扩展而来?我可以增加它们吗?

我一直在摆弄 Kotlin data classes,我在想是否有可能增加一些类(例如包含的功能copy)以增加所有data classes?

有可能增加data classes 吗?

0 投票
4 回答
18003 浏览

android - Proguard - do not obfuscate Kotlin data classes

In my project I use AutoValue for my old model classes. I started using Kotlin and I want to use Data Classes instead of AutoValue. I want to disable the obfuscation for all Data classes in my Data layer but to keep obfuscating the other classes in the package.

Is there a way to do this?

I would expect to have something like this in my Proguard file:

0 投票
1 回答
1374 浏览

inheritance - 如何对数据类使用简单继承?

在java中,

在 Kotlin 中,这归结为:

方法一:

方法二:

当您拥有简单地继承属性的数据类时,这两种方法都倾向于大量重复,因为您必须再次写下您指定的所有内容 - 这根本无法扩展并且不知何故感觉不对。

这是最先进的技术,还是将以前的 java 代码翻译成 kotlin 的最佳方式?

0 投票
2 回答
15852 浏览

android - 类文字的左侧只允许类

我在 StackOverflow 中知道很多类似的问题,但没有解决我的问题。

我有一个通用数据类:

我正在尝试这样使用:

IDE 显示错误:类文字的左侧只允许使用类

如何解决这个问题?提前致谢。

0 投票
1 回答
7360 浏览

inheritance - Kotlin:如何继承数据类中的属性

我有这样声明的抽象 Token 类:

我想继承数据类中的索引属性,如下所示:

但这给了我错误Data class primary constructor must have only property (val / var) parameters

我必须做些什么来解决这个问题?