Kotlin Data Class 打包 [已关闭]

2022-09-03 13:10:24

Kotlin 引入了数据类的美妙概念。这些类将派生 、 、 和一个基于构造函数中声明的属性的函数:equals()/hashCode()toString()getters()/setters()copy()

data class KotlinUser(val name: String, val age: Int)

在Java中,这看起来像这样:

public class JavaUser {
    public JavaUser(String name, Int age) {
       ...
    }
    //getters
    //setters
    //equals()/hashCode()
    //toString()
}

我的问题是关于在 Kotlin 中打包这些数据类文件。来自Java,我会存储在它自己的类文件中:JavaUserorg.package.foo.JavaUser

由于数据类的简单性,我们在 Kotlin 中是否以相同的方式存储数据类文件?(即 和每个数据类的单独文件)。另外,在一个类文件中存储多个数据类是否令人不快?org.package.foo.KotlinUser

org.package.foo.DataClasses包含:

data class Foo(val a: String, val b: String)
data class Bar(val a: Int, val b: Int)

我在 Kotlin 文档的习语/编码风格部分四处寻找,找不到任何关于此的内容(也许我略过了它)。最佳实践是什么?

谢谢!


答案 1

编码风格约定对此给出了非常明确的指导

建议在同一 Kotlin 源文件中放置多个声明(类、顶级函数或属性),只要这些声明在语义上彼此密切相关,并且文件大小保持合理(不超过几百行)。


答案 2

《Kotlin in Action》一书是关于源代码布局的(第 2.2.3 章,第 27 页):

在 Kotlin 中,您可以将多个类放在同一个文件中,并为该文件选择任何名称。

...

但是,在大多数情况下,遵循Java的目录布局并根据包结构将文件组织到目录中仍然是很好的做法。在 Kotlin 与 Java 混合的项目中,坚持这种结构尤为重要。

...

但是你应该毫不犹豫地将多个类拉到同一个文件中,特别是如果这些类很小(在Kotlin中,它们通常是小的)。

因此,要回答您的问题:这取决于:)