Kotlin数据类包装

Mik*_*nke 7 java convention coding-style 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()
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于在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)
Run Code Online (Sandbox Code Playgroud)

我环顾了Kotlin文档的成语/编码风格部分,但却找不到任何相关内容(也许我已经略过了它).什么是最佳做法?

谢谢!

yol*_*ole 9

编码风格约定为此提供了非常明确的指导:

配售相同科特林源文件中的多个声明(类,顶级功能或性质),只要是作为鼓励这些声明是密切相关的彼此语义并且文件大小保持合理(不超过几百线).


Phi*_*e A 7

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

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

...

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

...

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

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

  • 另外需要注意的是,方法/函数可以存在于Kotlin的文件级别(与Java相反,它强制方法成为类的一部分).因此,除了包含几个类之外,Kotlin文件还可以(或替代地)包含一组方法. (2认同)