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
, toString
和 componentN
运算符用于 kotlin 中的解构。
- 其他 - 它们没有意义,只是语言语法。
在 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
,toString
和componentN
运算符用于 kotlin 中的解构。 - 其他 - 它们没有意义,只是语言语法。