Kotlin - class 没有正文有什么用?

Kotlin - What is the use of class without body?

在 Kotlin 中,header 和 body 都是可选的;如果 class 没有正文,花括号可以省略。

所以我们可以这样定义class,

class Empty

这种class有什么用?

您可以将它用于某些自定义异常:

class Empty : Exception()

或作为 marker interface

interface Empty

或作为 data class:

data class Empty(val s: String)

或作为 marker annotation:

annotation class Empty

~这篇post值得一读

Kotlin 允许声明任何没有主体的类型,例如:

interface Interface;

class Class;

annotation class Annotation;

sealed class SealedClass;

data class DataClass(var value: String);

object ObjectClass;

enum class EnumClass;

class CompanionClass {
    companion object
}

各个定义的用法如下:

  • 接口 - 作为 marker interface.
  • annotation - 描述被注释的类型具有某种能力。例如:junit4 @Before@After 注释。
  • object - 它通常以令牌或锁或占位符等形式出现。例如:synchronized(lock){ /*thread safe working*/ }
  • data class - 快速定义一个java POJO class with getters, setters? , equals, hashCode, toStringcomponentN 运算符用于 kotlin 中的解构。
  • 其他 - 它们没有意义,只是语言语法。