2017-06-28 29 views
6

W Kotlin zarówno nagłówek, jak i ciało są opcjonalne; jeśli klasa nie ma ciał, można pominąć nawiasy klamrowe.Kotlin - Jaki jest pożytek z klasy bez ciała?

Więc możemy zdefiniować klasę podobnego

class Empty 

Jaki jest pożytek z tego typu klasy?

+2

To samo co "public class Empty {}" w Javie? – assylias

Odpowiedz

8

Można go używać dla niektórych niestandardowych wyjątkami:

class Empty : Exception() 

lub jako marker interface:

interface Empty 

lub jako data class:

data class Empty(val s: String) 

lub jako marker annotation:

annotation class Empty 

~ To jest dobre post do przeczytania.

+0

I, "klasa danych MyDataClass (...)' – nhaarman

2

Kotlin pozwala na stwierdzenie, wszelkiego rodzaju, bez ciała, na przykład:

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 
} 

wykorzystanie poszczególnych definicji można opisać jak poniżej:

  • interfejs - jako marker interface.
  • adnotacja - opis adnotowanego typu ma pewne zdolności. np .: junit4 @Before i @After adnotacje.
  • obiekt - często przedstawia się jako symbol lub blokadę lub symbol zastępczy i .etc. np: synchronized(lock){ /*thread safe working*/ }
  • klasa danych - szybko zdefiniować klasę Java POJO z getters, setters? , equals, , toString i componentN operatorów do destrukturyzacji w kotlinach.
  • inne - nie mają znaczenia, po prostu są składnią języka.