Kotlin数据类包装

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我将JavaUser存储在自己的Class文件中: org.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文档的成语/编码风格部分,但却找不到任何相关信息(也许我已经略过了它)。 什么是最佳做法?

谢谢!

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

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

Kotlin in Action一书讲述了源代码布局(第2.2.3章,第27页):

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

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

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

所以回答你的问题:这取决于:)