标签: data-class

Kotlin数据类从哪里扩展?我可以加强它们吗?

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

是否可以增加data classes?

kotlin data-class

1
推荐指数
1
解决办法
175
查看次数

如何写一个kotlin数据类来匹配json?

我正在使用Retrofit来调用API并使用converter-gson将响应json转换为kotlin

这是回应

{
    "id": "1",
    "rank": "1",
    "name": "Challenge",
    "status": "E",
    "createDate": "2018-09-17 15:01:28",
    "lastModDate": "2018-09-17 15:06:32",
    "category": "DINING",
    "photo": {
        "path": "http://example.com/xxx.jpg",
        "size": [
            400,
            267
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

这是数据类.

data class ServiceList (val id:Int,
                        val rank:Int,
                        val name:String,
                        val status:String,
                        val lastModDate:String,
                        val category:String,
                        ???????)
Run Code Online (Sandbox Code Playgroud)

如何完成这门课程?

json kotlin data-class

1
推荐指数
1
解决办法
394
查看次数

如何让数据类(Kotlin)从超类扩展并继承超类字段之一?

我尝试为我的一些数据类创建一个自定义的 toString() 方法。但我只想定义 fun toString 的覆盖一次。

这将是我的超级班:

abstract class Id(val value: String) {
   override fun toString(): String {
       return value
   }
}
Run Code Online (Sandbox Code Playgroud)

现在我想通过扩展超类 Id 在我的一些数据类中使用自定义的 toString() 方法:

data class MyId(val v: String): Id(v)
Run Code Online (Sandbox Code Playgroud)

但是,这会在 MyId 中为“v”引入辅助字段和 getter,这不是我想要的。使用“value”而不是“v”给我带来了问题:“value”隐藏了超类型“Id”的成员。我想重用 Id 中定义的“值”字段和 getter。我不想介绍一个新的。

我该如何纠正?

overriding kotlin data-class

1
推荐指数
1
解决办法
542
查看次数

我可以在 kotlin 数据类中创建泛型类型吗?

我有一个后端,它总是会返回带有一些数据的“成功”,因为在 json 字段中,字段将被命名为成功并在其中包含数据。或者它会以 json 格式返回一个错误对象。所以我想要某种 BaseResponse,所以当我使用它时,我可以做一些类似 BaseResponse 的事情,这样成功就会被映射为一个 Person 对象。

所以我想这样做:

@Parcelize
data class BaseResponse<T>(
     val success: T? = null
) : Parcelable
Run Code Online (Sandbox Code Playgroud)

但它说 Parcelize 不直接支持 Type。有什么办法可以做到这一点吗?还是我需要写一些自定义的东西?使用 Retrofit 和 Gson 作为序列化程序调用调用等。

generics parcelable kotlin data-class

1
推荐指数
1
解决办法
870
查看次数

Kotlin 在 mutableList 中查找重复项

我有一个清单

 val shoeCart = ShoeRepository.getShoeFromCart(this@ActivityCart)
Run Code Online (Sandbox Code Playgroud)

来自鞋库

 fun getShoeFromCart(context: Context): List<ShoeModel> {
    return getCart(context)
}
Run Code Online (Sandbox Code Playgroud)

ShoeModel 是一个数据类

data class ShoeModel
Run Code Online (Sandbox Code Playgroud)

我想知道我的 ShoesCart 中是否有重复的条目,如果有,有多少?

model list kotlin data-class mutablelist

1
推荐指数
1
解决办法
4206
查看次数

Parcelable 在 kotlin 中无法正常工作

sendData从发送StartActivityResultActivity

val sendData = SendData(10, "xyz", "yss")
sendData.e = 933
sendData.f = "hello"
sendData.g = 39

// Log.d("A", "${sendData.toString}")
val intent = Intent(this@StartActivity, ResultActivity::class.java)
intent.putExtra(RESULT_DATA, sendData)
startActivity(intent)
Run Code Online (Sandbox Code Playgroud)
sendData = intent.extras!!.getParcelable(RESULT_DATA)
// Log.d("B", "${sendData.toString}")
Run Code Online (Sandbox Code Playgroud)

模型类看起来像这样。

@Parcelize
data class SendData(var a: Int, var b: String, var c: String) : Parcelable {
    var e: Int? = null
    var f: String? = null
    var g: Int? = null
    
    var isClicked = false

    override fun toString(): String{
        return JsonUtil.toJson(this) …
Run Code Online (Sandbox Code Playgroud)

android parcelable android-intent kotlin data-class

1
推荐指数
1
解决办法
1009
查看次数

Python 中数据类的 sort_index 的用途是什么?

我正在学习数据类,但我对 sort_index 的目的及其实际工作原理感到困惑。

我似乎找不到任何有价值的信息。Python 官方文档没有提及这一点,这令人难以置信。

这是一个例子:

@dataclass(order=True)
class Person:
    sort_index: int = field(init=False, repr=False)
    name: str
    age: int
    weight: int = 190
 
    def __post_init__(self):
        self.sort_index = self.weight
Run Code Online (Sandbox Code Playgroud)

那么,sort_index的目的是什么?它是干什么用的?我什么时候使用它?

再次感谢您花时间回答我的问题。我是Python新手。

python python-3.x data-class python-dataclasses

1
推荐指数
1
解决办法
7705
查看次数

在地图中使用数据类的奇怪 Kotlin 行为

我是 Kotlin 的新手,我正在尝试理解它,我刚刚编写了一个简单的示例,该示例展示了如何将数据类与映射一起使用有点棘手,因为在我看来,数据类有一种奇怪的行为。默认情况下,他们根据类的每个属性定义 hashCode()。但他们没有定义默认的 equals() 方法。这给我带来了很多困惑,因为我创建了一个以数据类作为键的 HashMap,但我没有重写 hashCode() 和 equals()。我的数据类有一个 MutableList 成员。当我将一个元素放入映射中时,只要我没有将元素添加到 MutableList 中,我就会使用 map.get(dataObject) 检索它。之后,即使数据对象仍然相同,并且我使用map.keys(map.keys.indexOf(dataObject)有效)发现它,由于hashCode(),map.get(dataObject)失败了。

我可以使用普通类或添加 hashCode() 和 equals() 来修复它,从 hashCode() 中删除 MutableList,但我想知道,由于默认行为,重写 hashCode() 和 equals() 是否应该是“强制”与数据类一起使用,否则将它们与地图一起使用可能会导致错误。

我还能做些什么来避免这个问题吗?

    package cards
    
    data class Player(val name: String, var cards: MutableList<Card>) {
        constructor(name: String): this(name, mutableListOf())
    
    //I don't need to define equals, so pointers are checked. But if I don't override hashCode, as it's based
    //on every property, the hashCode is calculated considering the content of the MutableList!
    //    override …
Run Code Online (Sandbox Code Playgroud)

hashmap hashcode kotlin data-class

1
推荐指数
1
解决办法
1107
查看次数

科特林。ArrayList,如何将元素移动到第一个位置

我有一份清单Lessons。这是我的Lessons课程:

data class Lessons(
 val id: Long,
 val name: String,
 val time: Long,
 val key: String
)
Run Code Online (Sandbox Code Playgroud)

我需要将元素移动到列表的开头,其key字段的值为“priority”。这是我的代码:

   val priorityLesson = lessons.find { it.key == "priority" }
        
        if (priorityLesson != null) {
            lessons.remove(priorityLesson)
            lessons.add(0, priorityLesson)
        }
Run Code Online (Sandbox Code Playgroud)

一切正常,但我不喜欢这个解决方案,也许有一种更有效的方法来执行这个算法。此外,我需要将列表转换为可变的,并且我想将其保留为不可变的。

请帮我。

algorithm collections arraylist kotlin data-class

1
推荐指数
1
解决办法
1206
查看次数

覆盖数据类中的值

我尝试以下代码时遇到java.lang.StackOverflowError错误:堆栈大小8MB,应用程序恰好崩溃了1次,现在又不再崩溃了,我想知道这是否会引起任何问题提交此代码之前的未来

以下是本部分中使用的接口/数据类的示例

interface y{
    val image
}

data class x(val anotherImage): y{
    override val image
        get() = image ?: anotherImage
}
Run Code Online (Sandbox Code Playgroud)

我在这里想要的是让val图像包含图像的URL,有时后端在图像中返回它,而在其他时候在anotherImage中返回它,这就是为什么我写了这段代码,这里使用接口是为了与这个问题无关的问题

oop android properties kotlin data-class

0
推荐指数
1
解决办法
65
查看次数