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
存储在自己的类文件中: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文档的成语/编码风格部分环顾四周,找不到任何相关内容(也许我已经略过了它)。什么是最佳做法?
谢谢!
答案 0 :(得分:9)
编码样式约定对此提供quite explicit guidance:
鼓励在同一个Kotlin源文件中放置多个声明(类,顶级函数或属性),只要这些声明在语义上彼此密切相关且文件大小保持合理(不超过几百行)
答案 1 :(得分:7)
本书Kotlin in Action介绍了源代码布局(第2.2.3章,第27页):
在Kotlin中,您可以将多个类放在同一个文件中,并为该文件选择任何名称。
...
但是,在大多数情况下,遵循Java的目录布局并根据包结构将文件组织到目录中仍然是一种很好的做法。在Kotlin与Java混合的项目中,坚持这种结构尤为重要。
...
但是你不应该犹豫将多个类放到同一个文件中,特别是如果类很小(而且在Kotlin中,它们通常都是这样)。
所以回答你的问题:这取决于:)