Kotlin object
похож на класс в Java, где все методы и переменные являются статическими.
object User {
val name = ""
fun printName(name: String) = "Hello, $name!"
}
в Kotlin похож на следующее в Java:
class User {
public static String name = "";
public static String printName(name: String) {
return "Hello " + name + "!";
}
}
Пример использования:
//Kotlin
User.printName(User.name)
//Java
User.printName(User.name);
object
не совсем то же самое, что сравнение Java, которое я дал.Он может наследовать интерфейсы и классы, а сам объект создается как единичный экземпляр.Если вы аннотируете методы внутри объекта с помощью @JvmStatic
, они станут настоящими статическими членами.
Объект Kotlin
Класс data
в Kotlin:просто более простой синтаксис для класса, который не имеет (или минимальной) логики и содержит определенные значения.Kotlin генерирует функции equals()
, hashCode()
и toString()
для вас в классе данных вместе с некоторыми другими вспомогательными функциями.
data class User(val name: String, val age: String)
в Kotlin будет выглядеть примерно так в Java:
class User {
public final String name;
public final String age;
public User(String name, String age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object other) {
//Kotlin-generated equality check
}
@Override
public long hashCode() {
//Kotlin's hashcode
}
@Override
public String toString() {
return "User(name=" + name + ",age=" + age + ")";
}
//other generated methods
}
Документация класса данных Kotlin